Я попытался ввести недопустимую дату, которая является 4 31 2007 (апрель - 4-й месяц в календаре, и на нем только 30 дней), и мой код сделал то, что предполагалось, но почему мой цикл "делать в то время как" продолжает цикл даже хотя я ввел правильную дату?
class test
{
int nmonths;
int month;
int day;
int year;
public:
test()
{
int x;
do
{
cout << "Enter the date of most recent test (mm dd yyyy) (Ex. 01
09 2011):" <<endl;
cin >> month >> day >> year;
int days;
if ( month < 1 || month > 12 )
{
cout << "INVALID DATE!!!" << endl;
}
if ( month == 4 || month== 6 || month == 9 || month == 11)
{
days = 30;
if( day < 1 || day > 30)
{
cout << "INVALID DATE!!!" << endl;
x = 0;
}
}
if ( month == 2)
{
bool leapyear = (year% 4 == 0 && year % 100 != 0) || (year %
400 == 0);
if (leapyear == 0)
{
days = 28;
if (day < 1 || day > 28)
{
cout << "INVALID DATE!!!" << endl;
x = 0;
}
}
else
days = 29;
if ( day < 1 || day > 29 )
{
cout << "INVALID DATE!!!" << endl;
x = 0;
}
}
else
{
days = 31;
if ( day < 1 || day > 31)
{
cout << "INVALID DATE!!!" << endl;
x = 0;
}
}
}while(x == 0);
};
Это фото выхода, которое я получаю