Вопрос задан 21.12.2024 в 15:11. Предмет Информатика. Спрашивает Кокина Настя.

Длинное целое Ограничение времени 1 секунда
Ограничение памяти 64Mb
Ввод стандартный ввод или input.txt
Вывод стандартный вывод или output.txt
Напишите программу, которая разные действия производит с разными числами.

Формат ввода
Вводится число.

Формат вывода
Если введено вещественное число, то вывести только его целую часть, а если целое – то количество разрядов. Ничего другого вводиться не будет.

Пример 1
Ввод Вывод
2020.202
2020
Пример 2
Ввод Вывод
1234567890987654321
19
Примечания
В задаче нельзя определять типы переменных.

Перейти к ответам

Ответы на вопрос

Отвечает Прилуцкий Артём.

Для решения этой задачи нужно написать программу, которая в зависимости от вида введённого числа (вещественное или целое) производит соответствующие действия. При этом мы не можем явно проверять тип переменной, что делает задачу более интересной.

Алгоритм решения задачи

  1. Чтение данных: Мы считываем ввод как строку. Это позволяет избежать приведения типа к int или float сразу после ввода и работать с числом, не зная его типа.

  2. Определение типа числа через строковые операции: Поскольку нам запрещено явно определять тип переменной, можем использовать строковые методы:

    • Если введенное число содержит символ точки '.', то считаем его вещественным.
    • Если точки нет, значит, перед нами целое число.
  3. Выполнение операций в зависимости от типа числа:

    • Если в числе есть точка ('.'), мы считаем его вещественным числом. В таком случае нужно вывести только целую часть. Для этого можно взять часть строки до точки (до первого вхождения '.').
    • Если точки нет, то число считается целым, и нам нужно посчитать количество разрядов (символов) в этом числе. Для этого можно просто взять длину строки.
  4. Вывод результата: После выполнения вышеуказанных шагов мы выводим либо целую часть числа, если оно вещественное, либо количество разрядов, если оно целое.

Пример кода

Вот как будет выглядеть код на Python:

python
number = input().strip() # Читаем ввод и убираем пробелы по краям

if '.' in number: # Если в числе есть точка, это вещественное число integer_part = number.split('.')[0] # Берем целую часть до точки print(integer_part) else: # Если точки нет, это целое число print(len(number)) # Выводим количество символов (разрядов)

Объяснение работы кода на примерах

  1. Пример 1
    Ввод: 2020.202

    • Строка 2020.202 содержит точку, значит, это вещественное число.
    • Разделяем строку по точке, получаем 2020 как целую часть.
    • Вывод: 2020.
  2. Пример 2
    Ввод: 1234567890987654321

    • Строка 1234567890987654321 не содержит точки, значит, это целое число.
    • Длина строки 1234567890987654321 составляет 19 символов.
    • Вывод: 19.

Особенности реализации

  • Код работает без использования приведения типов, что соответствует условию задачи.
  • Для проверки на вещественное число используется простой поиск точки в строке.
  • Такой подход позволяет избежать лишних проверок и обработки исключений, связанных с конвертацией типов.

Заключение

Предложенное решение эффективно и соответствует условиям задачи.

Похожие вопросы

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос