09-单继承-
题目描述
定义计数器类,包含保护数据成员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行
每行对应每组当前时间和经过秒数后计算得到的新时间(小时:分钟:秒)。
输入样例
2
8 19 20
20
23 30 0
1801
8:19:40
0:0:1
#include<iostream>
using namespace std;
class counter
{
protected:
int value;
public:
counter():value(0){};
counter(int v):value(v){};
void increment()
{value++;}
~counter(){}
};
class counter2:public counter
{
int minvalue;
int maxvalue;
public:
counter2():maxvalue(0),minvalue(0){};
counter2(int v,int min,int max):counter(v),minvalue(min),maxvalue(max){};
int increment()
{
value++;
if(value==maxvalue)
value=minvalue;
return value;
}
int getvalue()
{return value;}
~counter2(){}
};
class cclock
{
counter2 hour,minute,second;
public:
cclock(int h,int m,int se):hour(h,0,24),minute(m,0,60),second(se,0,60){};//counter2(value,minvalue,maxvalue)
void time(int s)
{
while(s--)
{
if(second.increment()==0)
if(minute.increment()==0)
hour.increment();
}
cout<<hour.getvalue()<<":"<<minute.getvalue()<<":"<<second.getvalue()<<endl;
}
~cclock(){}
};
int main()
{
int n;
cin>>n;
while(n--)
{
int hour,minute,second,s;
cin>>hour>>minute>>second>>s;
cclock c(hour,minute,second);
c.time(s);
}
return 0;
}
本文介绍了一种利用单继承的方式实现计数器类,并基于此构建了一个时钟类,该类可以计算从当前时间开始经过指定秒数后的新时间。
1512

被折叠的 条评论
为什么被折叠?



