Напишите программу, которая вводит возраст человека (целое число, не превышающее 120) и выводит этот возраст со словом год года или лет. например 21 год 22 года 25 лет pascalabc.net

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

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

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

Для решения этой задачи в PascalABC.NET наиболее эффективно использовать оператор case. Основная сложность заключается в правильном склонении существительного «год» в зависимости от последней цифры числа, учитывая исключения для чисел от 11 до 14. Ниже представлен код программы с подробными комментариями. pascal

program AgeWord; begin // Считываем целое число (возраст) var age := ReadInteger('Введите возраст (0-120):'); // Проверяем корректность ввода if (age < 0) or (age > 120) then begin Print('Ошибка: возраст должен быть от 0 до 120'); exit; end; // Логика выбора правильного слова: // 1. Исключения: числа, оканчивающиеся на 11-14, всегда требуют слова "лет" // 2. В остальных случаях смотрим на последнюю цифру (age mod 10) var lastDigit := age mod 10; var lastTwoDigits := age mod 100; var word: string; if (lastTwoDigits >= 11) and (lastTwoDigits <= 14) then word := 'лет' else case lastDigit of 1: word := 'год'; 2, 3, 4: word := 'года'; else word := 'лет'; end; // Вывод результата с использованием интерполяции строк Print($'{age} {word}'); end. 
Use code with caution.Разбор логики работы Алгоритм склонения в русском языке опирается на следующие правила:

  • «год»: используется, если число оканчивается на 1, но не на 11 (например: 1, 21, 101).
  • «года»: используется, если число оканчивается на 2, 3, 4, но не на 12, 13, 14 (например: 3, 22, 104).
  • «лет»: используется во всех остальных случаях (например: 5, 10, 11, 19, 20, 112).

В коде мы сначала отсекаем диапазон 11..14 с помощью проверки остатка от деления на 100, а затем применяем case к последней цифре. Хотите, чтобы я дополнил программу проверкой на ввод текста вместо цифр или добавил цикл для многократной проверки разных чисел?

Форма ответа

Ваш аватар