定义一个满足下列要求的Date类

定义一个满足下列要求的Date类:

①用下面的格式输出日期:日/月/年

②可运行在日期上加一天操作

③设置日期

#include"iostream"
using namespace std;
class Date{
	private:
		int year;
		int month;
		int day;
	public:
		void print();
		void addOneDay();
		bool setDate(int ,int, int);
	private:
		bool isValid(int, int, int);
		bool isLeap(int);
};
void Date:: print()
{
	cout<<day<<"/"<<month<<"/"<<year;
}
void Date:: addOneDay()
{
	if (isValid(year,month,day+1))
     day+=1;
 else
	 if (isValid(year,month+1,1))
		 month++,day=1;
	 else
		 if (isValid(year+1,1,1))
			 year++,month=1,day=1;
 } 
bool Date:: setDate(int y,int m, int d)
{
	if(isValid(y,m,d))
	{year=y,month=m,day=d;return true;}
     return false;
}
bool Date:: isValid(int y, int m, int d)
{
	int dayLimit=31;
	if (y>9999 || y<1 || m>12 || m<1 || d<1) return false;
	switch(month)
	{
	 case 4:
	 case 6:
     case 9:
	 case 11:dayLimit--;break;
	 case 2:dayLimit=isLeap(y)?29:28;
	}
	return d<=dayLimit;
}
bool Date:: isLeap(int y)
{
	if ((y%4==0 && y %100 !=0) || (y%400==0)) return true;
	return false;
}
int main()
{
	Date d;
	int y ,m, r;
	cin>>y>>m>>r;
	while(!d.setDate(y,m,r))
	{
		cout<<"data error:";
		cin>>y>>m>>r;
	}
	d.addOneDay();
	d.print();
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

刘家奕_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值