日程安排(多重继承+重载)
作者:互联网
已有一个日期类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;
}
标签:多重,日程,int,s2,protected,重载,日程安排,id,输入 来源: https://www.cnblogs.com/iceforever7/p/16332338.html