日程安排(多重继承+重载)
已有一个日期类Date,包括三个protected成员数据
int year;
int month;
int day;
另有一个时间类Time,包括三个protected成员数据
int hour;
int minute;
int second;
现需根据输入的日程的日期时间,安排前后顺序,为此以Date类和Time类为基类,建立一个日程类Schedule,包括以下新增成员:
int ID;//日程的ID
bool operator < (const Schedule & s2);//判断当前日程时间是否早于s2
生成以上类,并编写主函数,根据输入的各项日程信息,建立日程对象,找出需要最早安排的日程,并输出该日程对象的信息。
输入格式: 测试输入包含若干日程,每个日程占一行(日程编号ID 日程日期(****//)日程时间(::**))。当读入0时输入结束,相应的结果不要输出。
输入样例:
1 2014/06/27 08:00:01
2 2014/06/28 08:00:01
0
#include<iostream>
#include<iomanip>
#include<math.h>
using namespace std;
class date
{
	protected:
		int year,month,day=0;	
};
class time
{
	protected:
		int hour,minute,second=0;
};
class schedule:public date,time
{
	protected:
		int id;
	public:
		void dis()
		{
			cout<<"The urgent schedule is No."<<id<<": "<<year<<"/"<<month<<"/"<<day<<" "<<hour<<":"<<minute<<":"<<second<<endl;
		}
		void set(int y,int m,int d,int h,int min,int s,int i)
		{
			year=y;month=m;day=d;hour=h;minute=min;second=s;id=i;
		}
		bool operator < (const schedule & s2)
		{
			double all;//暴力求和,可替换
			all=year*365+month*30+day+hour/24.0+minute/1440.0+second/86400.0;
			double all2;
			all2=s2.year*365+s2.month*30+s2.day+s2.hour/24.0+s2.minute/1440.0+s2.second/86400.0;
			if(all<all2)
			{
				return true;
			}
			else
			{
				return false;
			}
		}
};
int main()
{
	int id;
	schedule s1;
	s1.set(9999,0,0,0,0,0,0);
	for(;;)
	{
		cin>>id;
		if(id==0){break;}
		
		int y,m,d,h,min,s;
		char c1,c2,c3,c4;
		cin>>y>>c1>>m>>c2>>d>>h>>c3>>min>>c4>>s;//如果是cin输入,记得有字符。可替换
		schedule s2;
		s2.set(y,m,d,h,min,s,id);
		if(s2<s1)
		{
			s1=s2;
		}
		
	}
	s1.dis();
    return 0;
}
 
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号