C/C++

Помогите решить задачу по C++!

Нужно решить данную задачу при помощи switch.
#include <iostream>

using namespace std;

const int jours[13] = {0,31,28,31,30,31,30,31,31,30,31,30,31};

bool test(const int D, const int M)
{
if(M < 1 || M > 12)
{
cout << "Неверный месяц года!" << endl;
return false;
}
else if(D < 1 || D > jours[M])
{
cout << "Неверный день месяца!" << endl;
return false;
}
return true;
}

void next_date(int & D, int & M)
{
D++;
switch(D)
{
case 2: case 3: case 4: case 5: case 6: case 7: case 8:
case 9: case 10: case 11: case 12: case 13: case 14: case 15:
case 16: case 17: case 18: case 19: case 20: case 21: case 22:
case 23: case 24: case 25: case 26: case 27: case 28:
return;
break;
case 29:
if(M == 2)
{
M++;
D = 1;
}
break;
case 30:
return;
break;
case 31:
switch(M)
{
case 4: case 6: case 9: case 11:
M++;
D = 1;
break;
}
break;
case 32:
switch(M)
{
case 12:
M = 1;
D = 1;
break;
default:
M++;
D = 1;
}
break;
}
}

int main()
{
int D,M;
do
{
cout << "Введите день: ";
cin >> D;
cout << "Введите месяц: ";
cin >> M;
} while( ! test(D,M) );
next_date(D,M);
if(D < 10) cout << 0;
cout << D << '.';
if(M < 10) cout << 0;
cout << M << endl;
return 0;
}
МИ
Мамырбек Ибрахим
64 126
Лучший ответ