前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >时钟模拟(继承)

时钟模拟(继承)

作者头像
叶茂林
发布2023-07-30 09:53:30
1760
发布2023-07-30 09:53:30
举报
文章被收录于专栏:叶子的开发者社区

题目描述

定义计数器类,包含保护数据成员value,公有函数increment计数加1。

定义循环计算器继承计数器类,增加私有数据成员:最小值min_value,max_value,

重写公有函数increment,使得value在min_value~max_value区间内循环+1。

定义时钟类,数据成员是私有循环计数器对象小时hour、分钟minute、秒second,公有函数time(int s)计算当前时间经过s秒之后的时间,即hour,minute,second的新value值。

定义时钟类对象,输入当前时间和经过的秒数,调用time函数计算新时间。

根据题目要求,增加必要的构造函数、析构函数和其他所需函数。

因为clock是系统内置函数,为了避免重名,请不要使用clock作为类名或者函数名

输入

第一行测试次数n

2行一组,第一行为当前时间(小时 分钟 秒),第二行为经过的秒数。

输出

输出n行

每行对应每组当前时间和经过秒数后计算得到的新时间(小时:分钟:秒)。

输入样例1 

2 8 19 20 20 23 30 0 1801

输出样例1

8:19:40 0:0:1

思路分析

这道题有点东西,总体看题目你会发现应该是要我们算多少秒之后的时间,但是细细品读题目要求,你就会一脸茫然,这里有三个类,这个循环计算器是干什么的,它的成员函数increment又是干什么的,value在min_value~max_value区间内循环+1是什么意思,注意到这句话:定义时钟类,数据成员是私有循环计数器对象小时hour、分钟minute、秒second,是说hour、minute和second这三个是循环计数器对象的,这就清楚了,increment函数就是实现加一的操作,循环加一就是在一个区间内加一,比如hour是0~24,24加一应该是0,这就叫循环。

所以这里应该还涉及到进位,当value加一之后为0,那么就应该进位了。

AC代码

代码语言:javascript
复制
#include"iostream"
using namespace std;
class Counter
{
	protected:
		int value;
	public:
		Counter(int v):value(v){}
		void increment(){value++;}
		int getvalue(){return value;}
};
class Cyclecounter:public Counter
{
	private:
		int min_value,max_value;
	public:
		Cyclecounter(int minv,int maxv,int v):min_value(minv),max_value(maxv),Counter(v){}
		void increment()
		{
			if(++value==max_value)
			value=min_value;
		}
};
class CLOCK
{
	private:
		Cyclecounter hour,minute,second;
	public:
		CLOCK(int h,int m,int s):hour(0,24,h),minute(0,60,m),second(0,60,s){}
		void time(int s)
		{
			while(s--)
			{
				second.increment();
				if(second.getvalue()==0)
				{
					minute.increment();
					if(minute.getvalue()==0)
					hour.increment();
				}
			}
		}
		void showoff(){cout<<hour.getvalue()<<':'<<minute.getvalue()<<':'<<second.getvalue()<<endl;}
};
int main()
{
	int t,hour,min,sec,s;
	cin>>t;
	while(t--)
	{
		cin>>hour>>min>>sec>>s;
		CLOCK Clock(hour,min,sec);
		Clock.time(s);
		Clock.showoff();
	}
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-04-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 题目描述
  • 思路分析
  • AC代码
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档