Оператор выбора Case. Не могу доделать задание. С++. Классика.

программирование программы С++ Информатика Языки программирования

Задание: Даны два целых числа: D (день) и M (месяц), определяющие правильную дату невисокосного года.
Вывести значения D и M для даты, предшествующей указанной.

Примечание:
Код:
using namespace std;
int main()
{
setlocale (0,"rus");
int d,m;

cout<<"Программа нахождения даты, предшествующей указанной"<<endl;
cout<<"Введите число"<<endl;
cin>>d;
cout<<"Введите номер месяца"<<endl;
cin>>m;

d--;
if (d<=0)
{m--;
d=31;}

switch (m)
{
case 0:
cout<<"Предшествующая дата - "<<d<<" декабря"<<endl;
break;
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;
}
system ("pause");
return 0;
}

Примечание:
Проблема (то что нужно мне доделать, не могу понять как.) При вводе 1 числа любого месяца выводит всегда 31 число предыдущего месяца, а надо чтобы он выводил не 31, по крайне мере не всегда. Пытался добавить в case, не получилось.

Примечание:
Первый вариант мне нравиться куда больше, просто у меня при похожей конструкции ругался на булевые то ли значения, то ли переменные, и в итоге не считал. Вставил ваш вариант. Ругается на else без if`а... на последний если точнее, не будете ли вы так добры?
Ответы:
я бы изменил вот эту часть.
d--;
if (d<=0)
{m--;
d=31;  -  а точнее, вот эту ;))
}
у меня там опечатка
не else id, а else if
видимо по этому и ругается
если не поможет - пришлите сообщение об ошибке


14 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.