已有一個日期類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; }