拯救小明(多继承+友元)
题目描述
小明同学有着严重的拖延症,每次老师布置的作业都要到快要截止的时候才会开始动手完成,因此现在有着许许多多的作业完成。你是小明的好朋友,请帮小明找出最紧急的作业(即最早截止的作业)。
要求如下:
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. 苹果:按斤论价,每斤P元,买W斤,则需支付W*P元. 2. 香蕉:半价,每斤P ...
- 【拯救赵明】DDoS那些事
[拯救赵明]活动链接:http://51ctoblog.blog.51cto.com/26414/300667 DDoS那些事 两年前,刚到新的工作岗位2个半月的样子,就越到了大麻烦.这个麻烦事情一直 ...
- 【拯救赵明】全面防护网络***服务器负载及安全解决方案
[拯救赵明] 拿什么拯救我的网站 活动链接:http://51ctoblog.blog.51cto.com/26414/300667 喜欢本文请抽空帮我投下票哈~谢谢各位! 投票地址:http://n ...
- 设计模式:装饰模式(C++)【小明习武闯天下】
序言 这集带来大家一起学下装饰模式.装饰模式 看名字就能 猜到是干啥 就是用来 搞装修进行装饰的 嘛!没毛病,其实装饰模式 确实是用来装饰对象的 而且是为了解耦的.我们知道 类是生成对象的模板,我们 ...
- 【拯救赵明】全面防护网络攻击服务器负载及安全解决方案
[拯救赵明] 拿什么拯救我的网站 活动链接:http://51ctoblog.blog.51cto.com/26414/300667 喜欢本文请抽空帮我投下票哈~谢谢各位! 投票地址:http://n ...
- NYOJ-49 开心的小明
开心的小明 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 小明今天很开心,家里购置的新房就要领钥匙了,新房里有一间他自己专用的很宽敞的房间.更让他高兴的是,妈妈昨天对他 ...
- OSChina 周六乱弹 —— 小明和网关超经典的故事~
2019独角兽企业重金招聘Python工程师标准>>> 周六,又到了瞎扯淡的时间了.周末,约会,男男女女,还有那啥那啥,你们懂得- 男人和女人明显不同,这样才导致了异性相吸吗? 1. ...
- CSP 201812-2 小明放学 Python实现+详解
试题 代码 # 红灯 r 秒,黄灯 y 秒,绿灯 g 秒 r, y, g = [int(i) for i in input().split()]# n表示小明总共经过的道路段数和看到的红绿灯数目 n ...
- CSP 201812-1 小明上学 Python实现+详解
题目 代码 #红灯 r 秒,黄灯 y 秒,绿灯 g 秒 r,y,g = [int(i) for i in input().split()]#n表示小明总共经过的道路段数和看到的红绿灯数目 n = in ...
最新文章
- miui通知栏要点两下_MIUI免费主题分享,半透明通知栏很好看,另附壁纸!
- 算法----------字符串的排列(Java版本)
- Vuex 的异步数据更新(小记)
- vim-plug 插件安装
- mysql 日期_Mysql数据库常见函数(下)——日期时间函数
- 注意:匿名函数调用直接加载函数名setInterval(move,30)
- 10分钟上线 - API网关 + 函数计算实现图片处理服务
- 《OpenGL ES 2.0游戏开发(上卷):基础技术和典型案例》一第6章 让场景更逼真——光照效果...
- python从入门到放弃百度云-Python从入门到放弃——第一课
- SQL Server 2008 允许远程连接的解决方法
- ArcView GIS 应用与开发技术(1)-ViewTheme
- 微信答题小程序|在线答题系统
- 恐怖的aliedit
- python print文本和数字混合_详解Python中的文本处理
- 如何自己制作CHM电子书?
- latex制作幻灯片模板
- 你一定要掌握的三条IT运维面试技巧
- (基础)Promise中then()方法使用,多次调用、链式调用
- 怎样串联两台无线路由器:[1]二级路由设置
- 51单片机入门——Proteus 8 Professional的使用
热门文章
- golang路由mux的介绍及基本使用
- 安装sql server 2000:以前的某个程序安装已在安装计算机上创建挂起的文件
- scrapy过滤重复数据和增量爬取
- Qt编写物联网管理平台39-报警联动
- SQL 子查询怎么优化?写的很深的这种!
- el-upload上传失败提示框重新上传直接弹出选择文件
- 医疗器械经营与服务类毕业论文文献有哪些?
- 相关系数 Correlation Coefficient 的理解
- 博客 / 论坛 / 书籍 / 维基百科 参考文献类型
- Unhandled exception at 0x000007FEFD5C9E5D in OpenCV3.3_TestDemo.exe: Microsoft C++ exception: cv::Ex