Условие
Для заданного [latex]0 \le n \le 200[/latex], рассматриваемого как возраст человека, вывести фразу вида: «Мне 21 год», «Мне 32 года», «Мне 12 лет».
Тестирование
№ | Входные данные | Выходные данные |
1 | 0 | Мне 0 лет |
2 | 1 | Мне 1 год |
3 | 14 | Мне 14 лет |
4 | 24 | Мне 24 года |
5 | 111 | Мне 111 лет |
6 | 151 | Мне 151 год |
7 | 200 | Мне 200 лет |
Код
1 2 3 4 5 6 7 8 9 |
#include <iostream> using namespace std; int main() { int n; // Переменная для возраста cin >> n; cout << "Мне " << n << (n%10>4||n%10<1||n%100/10==1?" лет":(n%10>1?" года":" год")); // Тернарные операции для определения нужной формы слова "год" return 0; } |
Решение
Основная задача состоит в том, чтобы определить, какую форму слова «год» из трех существующих («год», «года», «лет») нужно вывести в конце предложения. Для этого обратимся к правилам его употребления:
В первой сотне лет:
- в первом десятке лет, до 5 лет употребляется слово «год»: 1 год, 2 года, 3 года, 4 года, а от 5 лет до 10 лет употребляется слово «лет»: 5 лет, …, 10 лет;
- во втором десятке лет употребляется слово «лет»: 11 лет, 12 лет, …, 20 лет;
- от третьего до 9-го десятка лет, в первых четырёх годах десятка употребляется слово «год»: 21 год, 22 года, 23 года, 24 года, а в остальных годах десятка употребляется слово «лет»: 25 лет, …, 29 лет, 30 лет.
В следующих сотнях лет повторяется порядок первой сотни лет.
Таким образом, форма слова зависит от того, на какие две цифры заканчивается возраст. Составим алгоритм из двух проверок:
- Если число заканчивается на [latex]0[/latex] или цифру, превышающую [latex]4[/latex], или если вторая с конца цифра этого числа — [latex]1[/latex], то выводим слово «лет» и завершаем программу; иначе переходим ко второй проверке.
- Если последняя цифра числа превышает [latex]1[/latex] (то есть является одной из следующих: [latex]2[/latex], [latex]3[/latex], [latex]4[/latex]), то выводим слово «года»; иначе выводим слово «год».
Наконец, реализуем вышеописанный алгоритм в виде двух вложенных одна в другую тернарных операций:
1 |
cout << "Мне " << n << (n%10>4||n%10<1||n%100/10==1?" лет":(n%10>1?" года":" год")); |
Ссылки
Код программы на Ideone.com;
Правила употребления слова «год».
Отличная работа. Зачтено.