已有一个日期类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; }