日程安排(多重继承+重载)
2022/5/31 23:21:20
本文主要是介绍日程安排(多重继承+重载),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
已有一个日期类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
#include<iostream> #include<iomanip> #include<math.h> using namespace std; class date { protected: int year,month,day=0; }; class time { protected: int hour,minute,second=0; }; class schedule:public date,time { protected: int id; public: void dis() { cout<<"The urgent schedule is No."<<id<<": "<<year<<"/"<<month<<"/"<<day<<" "<<hour<<":"<<minute<<":"<<second<<endl; } void set(int y,int m,int d,int h,int min,int s,int i) { year=y;month=m;day=d;hour=h;minute=min;second=s;id=i; } bool operator < (const schedule & s2) { double all;//暴力求和,可替换 all=year*365+month*30+day+hour/24.0+minute/1440.0+second/86400.0; double all2; all2=s2.year*365+s2.month*30+s2.day+s2.hour/24.0+s2.minute/1440.0+s2.second/86400.0; if(all<all2) { return true; } else { return false; } } }; int main() { int id; schedule s1; s1.set(9999,0,0,0,0,0,0); for(;;) { cin>>id; if(id==0){break;} int y,m,d,h,min,s; char c1,c2,c3,c4; cin>>y>>c1>>m>>c2>>d>>h>>c3>>min>>c4>>s;//如果是cin输入,记得有字符。可替换 schedule s2; s2.set(y,m,d,h,min,s,id); if(s2<s1) { s1=s2; } } s1.dis(); return 0; }
这篇关于日程安排(多重继承+重载)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-22[开源]10.3K+ Star!轻量强大的开源运维平台,超赞!
- 2024-11-21Flutter基础教程:新手入门指南
- 2024-11-21Flutter跨平台教程:新手入门详解
- 2024-11-21Flutter跨平台教程:新手入门与实践指南
- 2024-11-21Flutter列表组件教程:初学者指南
- 2024-11-21Flutter列表组件教程:新手入门指南
- 2024-11-21Flutter入门教程:初学者必看指南
- 2024-11-21Flutter入门教程:从零开始的Flutter开发指南
- 2024-11-21Flutter升级教程:新手必读的升级指南
- 2024-11-21Flutter升级教程:轻松掌握Flutter版本更新