数据准确性检测
#include<iostream>using namespace std;
class Date
{ private:
int year;
int month;
int day;
bool isLeapYear();
public:
bool check();
void set_date();
void show_date();
};
void Date::set_date()
{ cin>>year;
cin>>month;check();
cin>>day;check();}
void Date::show_date()
{ cout<<year<<" "<<month<<" "<<day<<endl;
}
bool Date::isLeapYear()
{
return (year%4==0 && year%100!=0)||(year%400==0);
}
bool Date::check()
{
int max_day;
int max[12]={31,28,31,30,31,30,31,31,30,31,30,31};
if(isLeapYear())
{ ++max[1];
}
max_day = max[month];
/*if((month>12)||(day>max_day))
{cout<<"输入错误,请重新输入:"<<endl;
set_date();
}*/
if(month>12)
{ cout<<"输入月份错误,请重新输入:"<<endl;
set_date();
}
max_day = max[month];
if(day>max_day)
{
cout<<"输入天错误,请重新输入:"<<endl;
set_date();
}
return 0;
}
int main()
{ Date d;
cout<<"请输入一个四位的阿拉伯数字表示的年,一个两位阿拉伯数字表示的月,一个两位的阿拉伯数字表示的日,并用回车分别输入"<<'\n';
d.set_date();
d.show_date();
cin.get();
return 0;
}
我输入“2012 3 45 ”,运行结果显示输入天数错误,我重新输入“2012 3 4”结果还是显示输入天数错误,请大家看看程序哪里出现问题,求助