Задача взята с сайта e-olymp
Условие:
Определить название времени года по заданному номеру месяца, используя составные условия.
Входные данные:
Одно число — номер месяца.
Выходные данные:
Для весенних месяцев вывести Spring, для летних — Summer, для осенних — Autumn и для зимних — Winter.
Тесты
№ | Входные данные | Выходные данные |
1 | 1 | Winter |
2 | 4 | Spring |
3 | 6 | Summer |
4 | 10 | Autumn |
1 2 3 4 5 6 7 8 |
#include <iostream> using namespace std; int main(){ int a; cin >> a; cout << ((a % 12) < 3 ? "Winter" : (a % 12) < 6 ? "Spring" : (a % 12) < 9 ? "Summer" : "Autumn"); return 0; } |
Ссылка на ideone.
Решение:
Для решения данной задачи необходимо использовать переменную с целочисленным значением, которое соответствует порядковому номера месяца (от 1 до 12 включительно). Вводим переменную с помощью оператора [latex] cin [/latex]. Выводим, какому времени года принадлежит введённый нами месяц, используя тернарную операцию и поочерёдно проверяя, какому из условий (различные остатки от деления на 12) удовлетворяет переменная. Если остаток от деления номера месяца будет [latex]<3[/latex], то программа выведет сообщение «Winter». По аналогии проверяем остальные возможные варианты: если остаток от деления [latex]<6[/latex], [latex]<9[/latex], то появится сообщение «Spring» или «Summer» соответственно. В ином случае месяц будет осенним, а программа выведет сообщение «Autumn».
— Отступы!
— 4 условных оператора это слишком много. И трёх хватит если использовать else. Заодно избавимся от излишних проверок.
— Условия довольно громоздкие. Если, например, использовать вместо [latex]a[/latex] остаток от деления на 12, то окажется, что _<3 зима, иначе _<6 весна, иначе _<9 лето, иначе осень.
- не нужно if, лучше _?_:_
Спасибо, исправил.
Хорошо. Зачтено. Хотя a%12 нужен только для первого «зимнего» условия. Т.е. можно было так cout << (a % 12 < 3 ? "Winter" : a < 6 ? "Spring" : a < 9 ? "Summer" : "Autumn");. И, кстати, cin не оператор.