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