赞
踩
已有一个日期类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
```css #include<cmath> #include<cstdio> #include<algorithm> #include<string> #include<vector> #include<iomanip> #include<iostream> using namespace std; class Date { protected://题目里这么说的 int year; int month; int day; public: Date(int a = 0, int b = 0, int c = 0):year(a), month(b), day(c) {}; }; class Time { protected://题目里就这么说的 int hour; int minute; int second; public: Time(int a = 0, int b = 0, int c = 0):hour(a), minute(b), second(c) {}; }; class Schedule : protected Date, protected Time { public: bool operator < (const Schedule & s){ if(year<s.year){ return true; } if(year==s.year&&month<s.month){ return true; } if(year==s.year&&month==s.month&&day<s.day){ return true; } int sum1=hour*3600+minute*60+second; int sum2=s.hour*3600+s.minute*60+s.second; if(year==s.year&&month==s.month&&day==s.day&&sum1<sum2){ return true; } return false; } Schedule(int y = 99999, int m = 0, int d = 0, int h = 0, int min = 0, int s = 0, int id = 0) :Date(y, m, d), Time(h, min, s) { ID=id; }; void show(){ cout<<ID<<": "<<year<<"/"<<month<<"/"<<day<<" "<<hour<<":"<<minute<<":"<<second<<endl; } protected: int ID; }; int main() { int y,m,d,h,min,s,id; Schedule mx; cin>>id; while(id!=0){ //scanf真好使哈哈哈 scanf("%d/%d/%d%d:%d:%d",&y,&m,&d,&h,&min,&s); Schedule sch(y,m,d,h,min,s,id); if(!(mx<sch)){//呜呜呜写完之后发现我可能写反了? mx=sch;//加个!一切问题不大嘿嘿嘿 } cin>>id; //sch.show(); } cout<<"The urgent schedule is No."; mx.show(); return 0; }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。