Дано натуральное число n (1n1188), определяющее возраст человека (в месяцах). выразить возраст в годах и месяцах. например, 21 год 10 месяцев, 52 года 1 месяц, 46 лет равно и т.д.

Поляков Евгений Александрович

Учитель информатики высшей категории

Проверено учителем

Для решения этой задачи необходимо разделить общее количество месяцев на 12. Целая часть от деления даст количество лет, а остаток — количество месяцев. Основная сложность заключается в правильном склонении слов «год» и «месяц» в зависимости от последней цифры числа. Алгоритм расчета Если дано число nn:

  1. Лет: y=n//12y equals n / / 12 (целочисленное деление). Месяцев: m=n(mod12)m equals n space open paren mod 12 close paren (остаток от деления).

Правила склонения существительных В русском языке выбор формы слова зависит от последней цифры (за исключением чисел от 11 до 14). Для слова «год»:

  • год: если y(mod10)=1y space open paren mod 10 close paren equals 1 и y(mod100)11y space open paren mod 100 close paren is not equal to 11. года: если y(mod10){2,3,4}y space open paren mod 10 close paren is an element of the set 2 comma 3 comma 4 end-set и y(mod100){12,13,14}y space open paren mod 100 close paren is not an element of the set 12 comma 13 comma 14 end-set. лет: во всех остальных случаях (0, 5–9, 11–14).

Для слова «месяц»:

  • месяц: если m=1m equals 1. месяца: если m{2,3,4}m is an element of the set 2 comma 3 comma 4 end-set. месяцев: если m{5,6,7,8,9,10,11}m is an element of the set 5 comma 6 comma 7 comma 8 comma 9 comma 10 comma 11 end-set или m=0m equals 0.

Примеры вычислений

Ввод ( nn) Расчет лет ( yy)Расчет месяцев ( mm)Итоговая фраза
21 21//12=121 / / 12 equals 1 21(mod12)=921 space open paren mod 12 close paren equals 91 год 9 месяцев
262 262//12=21262 / / 12 equals 21 262(mod12)=10262 space open paren mod 12 close paren equals 1021 год 10 месяцев
553 553//12=46553 / / 12 equals 46 553(mod12)=1553 space open paren mod 12 close paren equals 146 лет 1 месяц
624 624//12=52624 / / 12 equals 52 624(mod12)=0624 space open paren mod 12 close paren equals 052 года

Реализация на языке Python Ниже представлен программный код, который учитывает все правила грамматики: python

defformat_age(n): years = n // 12months = n % 12# Склонение летif11 <= years % 100 <= 14: y_word = "лет"elif years % 10 == 1: y_word = "год"elif2 <= years % 10 <= 4: y_word = "года"else: y_word = "лет"# Склонение месяцевif months == 1: m_word = "месяц"elif2 <= months <= 4: m_word = "месяца"else: m_word = "месяцев"# Сборка итоговой строкиresult = f"{years}{y_word}"if months > 0: result += f"{months}{m_word}"return result 
Use code with caution.Хотите, я составлю таблицу для конкретного диапазона чисел или напишу аналогичный код на другом языке программирования?

Форма ответа

Ваш аватар