Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.11.2014, 03:04   #1
Андрюшатина
 
Регистрация: 28.11.2014
Сообщений: 5
По умолчанию Приминение тернарного оператора. Необходимо определить месяц

Прошу помочь. Я новичок. Не могу разобраться.

Задача: По номеру введенным пользователем (от 1 до 12), необходимо вывести на экран соответствующий месяц.
Примечание: Нельзя пользоваться никакими помощниками по типу Switch, If и т.д.
Главное: Необходимо использовать только "Тернарный оператор".


Я примерно понял принцип и логику. Ниже написал код. По нему все компилируется. Только не могу понять, как сделать так, что бы выводился "только один месяц".
У кого будут какие предложения? Может следует переписать код?

Код:
#include <iostream>
using namespace std;
void main()
 
{
    int y1 = 0;
    const int y2 = 2, y4 = 4,  y6 = 6, y8 = 8, y10 = 10, y12 = 12;
    cin >> y1;
    cout << (y1<y2 ? "January" : "February")<<endl;
    cout << (y1<y4 ? "March" : "April") << endl;
    cout << (y1<y6 ? "May" : "June") << endl;
    cout << (y1<y8 ? "July" : "August") << endl;
    cout << (y1<y10 ? "September" : "Octomber") << endl;
    cout << (y1<y12 ? "November" : "December") << endl;
    
}
Заранее спасибо за ответы!

Последний раз редактировалось Stilet; 28.11.2014 в 07:45.
Андрюшатина вне форума Ответить с цитированием
Старый 28.11.2014, 04:01   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,341
По умолчанию

Код:
cout << ((x == 1) ? "январь" : (x == 2) ? "февраль" : "другой месяц");
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 28.11.2014, 04:05   #3
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,499
По умолчанию

Андрюшатина, а зачем вам константы y2,y4.. ? Можно просто 2,4..
А принцип такой можно - ловля льва в пустыне. Делим пустыню пополам, потом нужную половину пополам, и тд. Вложенные операторы
Код:
#include <iostream>
 using namespace std;
 int main()

 {
 int y;
 cin >> y;
 cout << (y<7 ? (y<4?(y<3?(y==1?"January":"February"):"March"):(y<6?(y==4?"April":"May"):"June"))
        :(y<10?(y<9?(y==7?"July":"August"):"September"):(y<12?(y==10?"Octomber":"November"):"December")))<<endl;
 return 0;
 }

Последний раз редактировалось type_Oleg; 28.11.2014 в 04:08.
type_Oleg вне форума Ответить с цитированием
Старый 28.11.2014, 05:05   #4
Андрюшатина
 
Регистрация: 28.11.2014
Сообщений: 5
По умолчанию

Спасибо вам огромное, вы мне теперь ещё больше расширили понимание того, как можно работать с Сишкой и то, что логика должна быть все таки безгранична!
Андрюшатина вне форума Ответить с цитированием
Старый 28.11.2014, 10:53   #5
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,646
По умолчанию

В реальной программе так делать точно не стоит. Заводите массив из 12 элементов - названия месяцев. Номер месяца будет индексом в массиве для получения названия, только единицу отнять надо, ведь месяцы с 1 нумеруются, а элементы массива с 0.
Arigato на форуме Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
С помощью оператора if определить Ghyt Помощь студентам 3 19.11.2014 12:53
c++ Создание тернарного дерева и поиск указанного элемента в нём. roman1012 Помощь студентам 0 02.11.2014 23:02
Необходимо определить совместимость с Html Николай_Kolumb PHP 6 25.04.2012 17:29
сберегательный банк 20 месяцев хранил клад под 2% в месяц, определить выплаты по вкладу в конце срока ninok Помощь студентам 1 23.05.2010 21:16
Необходимо определить n-ый член последовательности (рекурсии) фибоначи. ulaza Помощь студентам 3 21.01.2010 20:22