7-2 日程安排(多重继承+重载)

分数 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;
}

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值