Форум программистов, компьютерный форум CyberForum.ru

Оператор switch - C++

Восстановить пароль Регистрация
 
Elena)))
 Аватар для Elena)))
3 / 3 / 1
Регистрация: 11.10.2011
Сообщений: 48
17.10.2011, 19:39     Оператор switch #1
Даны два целых числа: D (день) и M (месяц), определяющие правильную дату
невисокосного года. Вывести значения D и M для даты, предшествующей указанной.

Добавлено через 21 час 50 минут
ага... ну почему никто не может помочь???
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.10.2011, 19:39     Оператор switch
Посмотрите здесь:

Cи++. Оператор switch. C++
C++ оператор switch
C++ Оператор switch
C++ Оператор switch
C++ Оператор switch
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Vourhey
Почетный модератор
6469 / 2244 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
17.10.2011, 19:41     Оператор switch #2
Цитата Сообщение от Elena))) Посмотреть сообщение
ну почему никто не может помочь???
а где, собственно, вопрос-то ваш?
Сыроежка
Заблокирован
17.10.2011, 19:42     Оператор switch #3
Цитата Сообщение от Elena))) Посмотреть сообщение
Даны два целых числа: D (день) и M (месяц), определяющие правильную дату
невисокосного года. Вывести значения D и M для даты, предшествующей указанной.

Добавлено через 21 час 50 минут
ага... ну почему никто не может помочь???
Все озадачались, как написать этот switch! То ли делать switch по месяцам, то ли по дням!

Например, можно сделать внешний switch по дням, а внутренний по месяцам. А можно, наоборот! То есть довольно сложная задача!
Elena)))
 Аватар для Elena)))
3 / 3 / 1
Регистрация: 11.10.2011
Сообщений: 48
17.10.2011, 19:45  [ТС]     Оператор switch #4
Например, можно сделать внешний switch по дням, а внутренний по месяцам. А можно, наоборот! То есть довольно сложная задача!
а если только по месяцам???
Сыроежка
Заблокирован
17.10.2011, 19:50     Оператор switch #5
Цитата Сообщение от Elena))) Посмотреть сообщение
а если только по месяцам???
Неа, лучше наверное по дням! Нужно проверить всего лишь два дня: первое ли это число месяца или не первое. Если не первое, то просто из дня вычитаем единицу, а месяц остается прежним. А если первое число месяца, то можно открыть второй switch уже по месяцам. Опять-таки проверять, первый это месяц года, или не первый. Если не первый, то опять (уже третий switch!) открываем, то есть проверяем, в месяце 31 день или 30, или 28!

Очень сложная задача! Сходу в ней не разобраться.
Федор-Липецк
4 / 4 / 0
Регистрация: 15.10.2011
Сообщений: 39
17.10.2011, 19:58     Оператор switch #6
Э.. а может D-1? а выбирать, какое это число? либо 1, 30, 31 и 28? и соответственно какой месяц, и какой перед ним месяц
Сыроежка
Заблокирован
17.10.2011, 20:05     Оператор switch #7
Цитата Сообщение от Федор-Липецк Посмотреть сообщение
Э.. а может D-1? а выбирать, какое это число? либо 1, 30, 31 и 28? и соответственно какой месяц, и какой перед ним месяц
А какое значение имеет 31 это число или 30? Все равно вычитаем единицу. Проблема как раз состоит для числа, равномк первому числу месяца.
Elena)))
 Аватар для Elena)))
3 / 3 / 1
Регистрация: 11.10.2011
Сообщений: 48
17.10.2011, 20:17  [ТС]     Оператор switch #8
Цитата Сообщение от Сыроежка Посмотреть сообщение
Неа, лучше наверное по дням!
может здесь с днемя можно че-нить придумать???

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include<iostream>
using namespace std;
int main()
{
    setlocale(0,"rus");
    int d, m;
 
cout<<"Введите число: "; cin>>d;
cout<<"Введите месяц: "; cin>>m;
d=d-1;
if (m==2) d==28;
else if (m==1||m==3||m==5||m==7||m==8||m==10||m==12) d==31;
else d==30;
 
if (d<=0||d>31) cout<<"Неверное число!"<<endl;
else {
switch(m)
{
    case 1: cout<<"Предшествующая дата: "<<d<<" января"<<endl; break;
    case 2: cout<<"Предшествующая дата: "<<d<<" февраля"<<endl; break;
    case 3: cout<<"Предшествующая дата: "<<d<<" марта"<<endl; break;
    case 4: cout<<"Предшествующая дата: "<<d<<" апреля"<<endl; break;
    case 5: cout<<"Предшествующая дата: "<<d<<" мая"<<endl; break;
    case 6: cout<<"Предшествующая дата: "<<d<<" июня"<<endl; break;
    case 7: cout<<"Предшествующая дата: "<<d<<" июля"<<endl; break;
    case 8: cout<<"Предшествующая дата: "<<d<<" августа"<<endl; break;
    case 9: cout<<"Предшествующая дата: "<<d<<" сентября"<<endl; break;
    case 10: cout<<"Предшествующая дата: "<<d<<" октября"<<endl; break;
    case 11: cout<<"Предшествующая дата: "<<d<<" ноября"<<endl; break;
    case 12: cout<<"Предшествующая дата: "<<d<<" декабря"<<endl; break;
        default: cout<<"Неверное число!"<<endl;
            
}
}
return 0;
}
 Комментарий модератора 
Используйте теги форматирования кода!
Сыроежка
Заблокирован
17.10.2011, 20:25     Оператор switch #9
Цитата Сообщение от Elena))) Посмотреть сообщение
может здесь с днемя можно че-нить придумать???

#include<iostream>
using namespace std;
int main()
{
setlocale(0,"rus");
int d, m;

cout<<"Введите число: "; cin>>d;
cout<<"Введите месяц: "; cin>>m;
d=d-1;
if (m==2) d==28;
else if (m==1||m==3||m==5||m==7||m==8||m==10||m==12) d==31;
else d==30;

if (d<=0||d>31) cout<<"Неверное число!"<<endl;
else {
switch(m)
{
case 1: cout<<"Предшествующая дата: "<<d<<" января"<<endl; break;
case 2: cout<<"Предшествующая дата: "<<d<<" февраля"<<endl; break;
case 3: cout<<"Предшествующая дата: "<<d<<" марта"<<endl; break;
case 4: cout<<"Предшествующая дата: "<<d<<" апреля"<<endl; break;
case 5: cout<<"Предшествующая дата: "<<d<<" мая"<<endl; break;
case 6: cout<<"Предшествующая дата: "<<d<<" июня"<<endl; break;
case 7: cout<<"Предшествующая дата: "<<d<<" июля"<<endl; break;
case 8: cout<<"Предшествующая дата: "<<d<<" августа"<<endl; break;
case 9: cout<<"Предшествующая дата: "<<d<<" сентября"<<endl; break;
case 10: cout<<"Предшествующая дата: "<<d<<" октября"<<endl; break;
case 11: cout<<"Предшествующая дата: "<<d<<" ноября"<<endl; break;
case 12: cout<<"Предшествующая дата: "<<d<<" декабря"<<endl; break;
default: cout<<"Неверное число!"<<endl;

}
}
return 0;
}
Я не понял начало вашего кода.

C++
1
2
d=d-1;
if (m==2) d==28;
Почему d кладете равным 28?!
Elena)))
 Аватар для Elena)))
3 / 3 / 1
Регистрация: 11.10.2011
Сообщений: 48
17.10.2011, 20:31  [ТС]     Оператор switch #10
Цитата Сообщение от Сыроежка Посмотреть сообщение
Почему d кладете равным 28?!
2-ой месяц, февраль, 28 дней (по условию год невисокосный)
Сыроежка
Заблокирован
17.10.2011, 20:46     Оператор switch #11
Цитата Сообщение от Elena))) Посмотреть сообщение
2-ой месяц, февраль, 28 дней (по условию год невисокосный)
Но вы же должны ввести произвольную дату, или я не так понял? То есть пользователь вводит произвольную дату (произвольный день и месяц), а вы, почему-то, меняете введенный им день на 28.
Elena)))
 Аватар для Elena)))
3 / 3 / 1
Регистрация: 11.10.2011
Сообщений: 48
17.10.2011, 20:58  [ТС]     Оператор switch #12
Цитата Сообщение от Сыроежка Посмотреть сообщение
Но вы же должны ввести произвольную дату, или я не так понял? То есть пользователь вводит произвольную дату (произвольный день и месяц), а вы, почему-то, меняете введенный им день на 28.
нет, так день(в смысле введенная произвольная дата) на 28 меняться не будет, я же не присваиваю... ну надо же как-то показать, сколько дней в месяце...
Сыроежка
Заблокирован
17.10.2011, 21:04     Оператор switch #13
Я посмотрел внимательно, так вы там вообще даже не присваиваете, а сравниваете.

C++
1
if (m==2) d==28;
То есть я смысла не вижу в этом предложении.
Elena)))
 Аватар для Elena)))
3 / 3 / 1
Регистрация: 11.10.2011
Сообщений: 48
17.10.2011, 21:18  [ТС]     Оператор switch #14
Цитата Сообщение от Сыроежка Посмотреть сообщение
Я посмотрел внимательно, так вы там вообще даже не присваиваете, а сравниваете.

C++
1
if (m==2) d==28;
То есть я смысла не вижу в этом предложении.
да, действительно..хах))) я наверное поняла, надо заметить ту часть на
if (d<=0)
{m--;
d=31;}
Сыроежка
Заблокирован
17.10.2011, 21:21     Оператор switch #15
Цитата Сообщение от Elena))) Посмотреть сообщение
да, действительно..хах))) я наверное поняла, надо заметить ту часть на
if (d<=0)
{m--;
d=31;}
Но это же не switch, а if, не так ли?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.10.2011, 21:39     Оператор switch
Еще ссылки по теме:

Оператор switch C++
C++ Оператор switch C++
Оператор switch и while C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Elena)))
 Аватар для Elena)))
3 / 3 / 1
Регистрация: 11.10.2011
Сообщений: 48
17.10.2011, 21:39  [ТС]     Оператор switch #16
Цитата Сообщение от Сыроежка Посмотреть сообщение
Но это же не switch, а if, не так ли?
так... но хотя бы с днями выполняется... ну не могу додуматься как эти дни со switch записать...
Yandex
Объявления
17.10.2011, 21:39     Оператор switch
Ответ Создать тему
Опции темы

Текущее время: 06:17. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru