【TOJ 5245】C++实验:日期相减

描述

编写日期类,并判断某个日期若干天之前是什么日期?

主函数里的代码已经给出,请补充完整,提交时请勿包含已经给出的代码。

int main()
{
	int y, m, d, num;
	while(cin>>y>>m>>d>>num)
	{
		Date date(y, m, d);
		cout<<date-num<<endl;
	}
	return 0;
}

输入

输入数据有多组,每组占2行,第一行为3个正整数,表示某个日期day的年、月、日。

第二行为一个整数n。

输出

每组输出一个日期,表示日期day对应n天前的日期,输出格式见样例。

样例输入

2000 3 1
1
2000 3 1
2

样例输出

2000-2-29
2000-2-28

#include<iostream>
using namespace std;
int day[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
class Date{
public:
    int y,m,d;
    Date(int y=0,int m=0,int d=0):y(y),m(m),d(d){}
    friend ostream &operator<<(ostream &os,const Date&x)
    {
        os<<x.y<<"-"<<x.m<<"-"<<x.d;
        return os;
    }
    Date operator-(int num)
    {
        while(num!=0)
        {
            if(y%400==0||y%4==0&&y%100!=0)
                day[2]=29;
            else day[2]=28;

            if(num-d>=0)
            {
                num=num-d;
                m--;
                if(m==0)
                {
                    m=12;
                    y--;
                }
                d=day[m];
            }
            else if(num-d<0)
            {
                d=d-num;
                break;
            }
        }
        return *this;
    }
};
class Integer;
int main()
{
    int y, m, d, num;
    while(cin>>y>>m>>d>>num)
    {
        Date date(y, m, d);
        cout<<date-num<<endl;
    }
    return 0;
}

猜你喜欢

转载自www.cnblogs.com/kannyi/p/9050245.html