分数 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
代码长度限制
16 KB
时间限制
400 ms
内存限制
#include<iostream>
using namespace std;
class Date{
protected:
int year;
int month;
int day;
public:
Date(int y,int m ,int d)
{
year=y;
month=m;
day=d;
}
};
class Time{
protected:
int hour;
int minute;
int second;
public:
Time(int h,int min,int s)
{
hour=h;
minute=min;
second=s;
}
};
class Schedule :public Date,public Time{
private:
int ID;
public:
Schedule(int y,int m,int d,int h,int min,int s,int I):Date(y,m,d),Time(h,min,s)
{
ID=I;
}
bool operator < (const Schedule & s2);
void show();
};
bool Schedule:: operator < (const Schedule & s2)
{
int sum1=0,sum2=0;
if(year==s2.year&&month==s2.month)
{
sum1=hour*3600+minute*60+second+day*24*3600;
sum2=s2.hour*3600+s2.minute*60+s2.second+s2.day*24*3600;
}
else if( year>s2.year)
{
sum1=2;
sum2=1;
}
else if(year<s2.year)
{
sum1=3;
sum2=4;
}
else if(year==s2.year&&month<s2.month)
{
sum1=5;
sum2=6;
}
else if(year==s2.year&&month>s2.month)
{
sum1=6;
sum2=5;
}
if(sum1<sum2)
{
sum1=0;
sum2=0;
return true;
}
else
{
sum1=0;
sum2=0;
return false;
}
}
void Schedule:: show()
{
cout<<" cout<<"The urgent schedule is No."<<ID<<": "<<year<<"/"<<month<<"/"<<day<<" "<<hour<<":"<<minute<<":"<<second<<endl;
}
int main()
{
Schedule mx(9999,0,0,0,0,0,0);
int i,a=0,b=0,c=0,d=0,e=0,f=0;
cin>>i;
while(i!=0)
{
scanf("%d/%d/%d%d:%d:%d",&a,&b,&c,&d,&e,&f);
Schedule sch(a,b,c,d,e,f,i);
if(sch<mx)
{
mx=sch;
}
cin>>i;
}
mx.show();
return 0;
}