已有一个日期类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
输出样例:
The urgent schedule is No.1: 2014/6/27 8:0:1
#include <iostream> #include <algorithm> #include <cstdio> using namespace std; class schedule{ int id; int year; int month; int day; int hour; int minute; int second; public: schedule(int id=0,int year=0,int month=0,int day=0,int hour=0,int minute=0,int second=0 ):id(id),year(year),month(month),day(day),hour(hour),minute(minute),second(second){} friend bool cmp(schedule a,schedule b); void print(){ printf("The urgent schedule is No.%d: %d/%d/%d %d:%d:%d",id,year,month,day,hour,minute,second); } }; bool cmp(schedule b,schedule a){ return a.year>b.year ||a.year==b.year&&a.month>b.month ||a.year==b.year&&a.month==b.month&&a.day>b.day ||a.year==b.year&&a.month==b.month&&a.day==b.day&&a.hour>b.hour ||a.year==b.year&&a.month==b.month&&a.day==b.day&&a.hour==b.hour&&a.minute>b.minute ||a.year==b.year&&a.month==b.month&&a.day==b.day&&a.hour==b.hour&&a.minute==b.minute&&a.second>b.second; } int main(){ schedule *a=new schedule[100]; int n=0,id=1; int year; int month; int day; int hour; int minute; int second; int i=0; while(1){ cin>>id; if(id==0)break; scanf("%d/%d/%d %d:%d:%d",&year,&month,&day,&hour,&minute,&second); a[i]=schedule(id,year,month,day,hour,minute,second); i++; } sort(a,a+i,cmp); a[0].print(); return 0; }