题目描述

小明同学有着严重的拖延症,每次老师布置的作业都要到快要截止的时候才会开始动手完成,因此现在有着许许多多的作业完成。你是小明的好朋友,请帮小明找出最紧急的作业(即最早截止的作业)。

要求如下:

1.定义一个日期类Date,包括三个protected成员数据year,month,day;

2.定义一个时间类Time,包括三个protected成员数据hour,minute,second(12小时制);

3.以Date类和Time类为基类,创建一个作业类Work,包括新增成员:int ID;作业的ID

4.定义一个友元函数bool before(const Work& w1,const Work& w2);//判断作业w1的时间是否早于作业w2的时间。

输入

输入若干作业,每个作业占一行(作业ID 年 月 日 时 分 秒)

当输入0时结束,相应的结果不要输出。

输出

时间最靠前的作业。

输入样例1 

1 2021 9 25 4 5 6
2 2020 6 13 5 7 8
3 2021 8 21 6 7 9
5 2022 7 8 9 10 11
4 2021 7 26 5 25 30
0

输出样例1

The urgent Work is No.2: 2020/06/13 05:07:08

思路分析

根据输出我们可以知道,没有办法用数组排序的方法去做,因为不知道有多少个。

所以只能读取一个比较一个,我们把第一个读取的作为最早的作业的,然后后面每读取一个都与之做判断,用友元函数before去比较,发现更早的就把新的赋值给旧的,最后输出。

我们把友元函数before写成像sort函数排序规则那样,从年份开始判断,相等的再判断月份,依次到日、小时、分组、秒。

AC代码

#include<iostream>
#include"iomanip"
#include<string>
using namespace std;
class Date
{protected:int year,month,day;public:Date(int year,int month,int day):year(year),month(month),day(day){}
};
class Time
{protected:int hour,minute,second;public:Time(int hour,int minute,int second):hour(hour),minute(minute),second(second){}
};
class Work:public Date,public Time
{protected:int ID;public:Work(int ID,int year,int month,int day,int hour,int minute,int second):ID(ID),Date(year,month,day),Time(hour,minute,second){}void print(){cout<<"The urgent Work is No."<<ID<<": "<<year<<"/"<<setw(2)<<setfill('0')<<month<<"/"<<setw(2)<<setfill('0')<<day<<' '<<setw(2)<<setfill('0')<<hour<<':'<<setw(2)<<setfill('0')<<minute<<':'<<setw(2)<<setfill('0')<<second<<endl;}friend bool before(const Work&w1,const Work&w2);
};
bool before(const Work & w1,const Work & w2)
{if(w1.year<w2.year)return 1;else if(w1.year>w2.year)return 0;if(w1.month<w2.month)return 1;else if(w1.month>w2.month)return 0;if(w1.day<w2.day)return 1;else if(w1.day>w2.day)return 0;if(w1.hour<w2.hour)return 1;else if(w1.hour>w2.hour)return 0;if(w1.minute<w2.minute)return 1;else if(w1.minute>w2.minute)return 0;if(w1.second<w2.second)return 1;else if(w1.second>w2.second)return 0;
}
int main()
{int ID,year,month,day,hour,minute,second;cin>>ID>>year>>month>>day>>hour>>minute>>second;Work w1(ID,year,month,day,hour,minute,second);while(1){cin>>ID;if(ID==0)break;cin>>year>>month>>day>>hour>>minute>>second;Work w2(ID,year,month,day,hour,minute,second);if(before(w1,w2)==0)w1=w2;   }w1.print();
}

拯救小明(多继承+友元)相关推荐

  1. 小明的水果店(多态与继承)

    .题目描述 小明经营着一个不大的水果店(似曾相识哦~),只销售苹果.香蕉和桔子.为了促销,小明制定了如下定价策略: 1. 苹果:按斤论价,每斤P元,买W斤,则需支付W*P元. 2. 香蕉:半价,每斤P ...

  2. 【拯救赵明】DDoS那些事

    [拯救赵明]活动链接:http://51ctoblog.blog.51cto.com/26414/300667 DDoS那些事 两年前,刚到新的工作岗位2个半月的样子,就越到了大麻烦.这个麻烦事情一直 ...

  3. 【拯救赵明】全面防护网络***服务器负载及安全解决方案

    [拯救赵明] 拿什么拯救我的网站 活动链接:http://51ctoblog.blog.51cto.com/26414/300667 喜欢本文请抽空帮我投下票哈~谢谢各位! 投票地址:http://n ...

  4. 设计模式:装饰模式(C++)【小明习武闯天下】

    序言 这集带来大家一起学下装饰模式.装饰模式 看名字就能  猜到是干啥 就是用来 搞装修进行装饰的 嘛!没毛病,其实装饰模式 确实是用来装饰对象的 而且是为了解耦的.我们知道 类是生成对象的模板,我们 ...

  5. 【拯救赵明】全面防护网络攻击服务器负载及安全解决方案

    [拯救赵明] 拿什么拯救我的网站 活动链接:http://51ctoblog.blog.51cto.com/26414/300667 喜欢本文请抽空帮我投下票哈~谢谢各位! 投票地址:http://n ...

  6. NYOJ-49 开心的小明

    开心的小明 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描述 小明今天很开心,家里购置的新房就要领钥匙了,新房里有一间他自己专用的很宽敞的房间.更让他高兴的是,妈妈昨天对他 ...

  7. OSChina 周六乱弹 —— 小明和网关超经典的故事~

    2019独角兽企业重金招聘Python工程师标准>>> 周六,又到了瞎扯淡的时间了.周末,约会,男男女女,还有那啥那啥,你们懂得- 男人和女人明显不同,这样才导致了异性相吸吗? 1. ...

  8. CSP 201812-2 小明放学 Python实现+详解

    试题 代码 # 红灯 r 秒,黄灯 y 秒,绿灯 g 秒 r, y, g = [int(i) for i in input().split()]# n表示小明总共经过的道路段数和看到的红绿灯数目 n ...

  9. CSP 201812-1 小明上学 Python实现+详解

    题目 代码 #红灯 r 秒,黄灯 y 秒,绿灯 g 秒 r,y,g = [int(i) for i in input().split()]#n表示小明总共经过的道路段数和看到的红绿灯数目 n = in ...

最新文章

  1. miui通知栏要点两下_MIUI免费主题分享,半透明通知栏很好看,另附壁纸!
  2. 算法----------字符串的排列(Java版本)
  3. Vuex 的异步数据更新(小记)
  4. vim-plug 插件安装
  5. mysql 日期_Mysql数据库常见函数(下)——日期时间函数
  6. 注意:匿名函数调用直接加载函数名setInterval(move,30)
  7. 10分钟上线 - API网关 + 函数计算实现图片处理服务
  8. 《OpenGL ES 2.0游戏开发(上卷):基础技术和典型案例》一第6章 让场景更逼真——光照效果...
  9. python从入门到放弃百度云-Python从入门到放弃——第一课
  10. SQL Server 2008 允许远程连接的解决方法
  11. ArcView GIS 应用与开发技术(1)-ViewTheme
  12. 微信答题小程序|在线答题系统
  13. 恐怖的aliedit
  14. python print文本和数字混合_详解Python中的文本处理
  15. 如何自己制作CHM电子书?
  16. latex制作幻灯片模板
  17. 你一定要掌握的三条IT运维面试技巧
  18. (基础)Promise中then()方法使用,多次调用、链式调用
  19. 怎样串联两台无线路由器:[1]二级路由设置
  20. 51单片机入门——Proteus 8 Professional的使用

热门文章

  1. golang路由mux的介绍及基本使用
  2. 安装sql server 2000:以前的某个程序安装已在安装计算机上创建挂起的文件
  3. scrapy过滤重复数据和增量爬取
  4. Qt编写物联网管理平台39-报警联动
  5. SQL 子查询怎么优化?写的很深的这种!
  6. el-upload上传失败提示框重新上传直接弹出选择文件
  7. 医疗器械经营与服务类毕业论文文献有哪些?
  8. 相关系数 Correlation Coefficient 的理解
  9. 博客 / 论坛 / 书籍 / 维基百科 参考文献类型
  10. Unhandled exception at 0x000007FEFD5C9E5D in OpenCV3.3_TestDemo.exe: Microsoft C++ exception: cv::Ex