【问题描述】
设计一个程序用于向后推算指定日期经过n天后的具体日期。
【输入形式】
-
输入年月日和一个正整数n。
【输出形式】
-
当推算出的年份大于4位数时,输出"out of limitation!",否则输出具体的日期。
【样例输入1】
25 7 9 60000
【样例输出1】
189-10-17
【样例输入2】
1931 9 18 5080
【样例输出2】
1945-8-15
【样例输入3】
9998 2 8 999
【样例输入3】
out of limitation!
【样例说明】
-
输入都是正整数。
-
注意闰年和平年的2月份天数不同。
-
注意判断输出信息是否符合要求。
【评分标准】
共5个测试用例
#include <iostream>
using namespace std;
class Date
{
public:
Date()
{
cin>>y>>m>>d>>n;
}
int beLeapYear()
{
return ((y%4==0&&y%100!=0)||(y%400==0));
}
void addDay()
{
int x;
for(x=0;x<n;x++)
{
d++;
if(d==31 && (m==4||m==6||m==9||m==11))
{
d=1;
m++;
if(m==13)
{
m=1;
y++;
}
}
else if((d==29 && beLeapYear()==0 && m==2)||(d==30 && beLeapYear()==1 && m==2))
{
d=1;
m++;
}
else if(d==32 && (m==1||m==3||m==5||m==7||m==8||m==10||m==12))
{
d=1;
m++;
if(m==13)
{
m=1;
y++;
}
}
}
}
void showDate()
{
if(y>9999)
cout<<"out of limitation!";
else
cout<<y<<"-"<<m<<"-"<<d<<endl;
}
private:
int y,m,d,n;
};
int main()
{
Date d;
d.addDay();
d.showDate();
}