pta 日程安排(多重继承+重载) (40分)


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

 

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM