题目描述
定义计数器类,包含保护数据成员value,公有函数increment计数加1。
定义循环计算器继承计数器类,增加私有数据成员:最小值minValue,maxValue,
重写公有函数increment,使得value在minValue~maxValue区间内循环+1。
定义时钟类,数据成员是私有循环计数器对象小时hour、分钟minute、秒second,公有函数time(int s)计算当前时间经过s秒之后的时间,即hour,minute,second的新value值。
定义时钟类对象,输入当前时间和经过的秒数,调用time函数计算新时间。
根据题目要求,增加必要的构造函数、析构函数和其他所需函数。
因为clock和time是系统内置函数,为了避免重名,请不要使用clock或者time作为类名或者函数名
输入
第一行测试次数n
2行一组,第一行为当前时间(小时 分钟 秒),第二行为经过的秒数。
输出
输出n行
每行对应每组当前时间和经过秒数后计算得到的新时间(小时:分钟:秒)。
样例查看模式
正常显示查看格式
输入样例1 <-复制
输出样例1
#include<iostream>
using namespace std;
class Time
{
protected:
int value;
public:
Time() {};
Time(int v)
{
value = v;
}
void increment()
{
value++;
}
};
class Time1:public Time
{
protected:
int minValue;
int maxValue;
public:
Time1() {};
Time1(int v, int min, int max) :Time(v)
{
minValue = min;
maxValue = max;
}
void increment()
{
value++;
if (value == maxValue)
{
value = minValue;
}
}
int getvalue()
{
return value;
}
};
class Clock
{
//私有循环计数器对象小时hour、分钟minute、秒second,
private:
Time1 hour;
Time1 minute;
Time1 second;
public:
//公有函数time(int s)计算当前时间经过s秒之后的时间,
//即hour,minute,second的新value值。
Clock() {};
Clock(int h, int m, int s):hour(h,0,24),minute(m,0,60),second(s,0,60)
{
}
void time(int s)
{
for (int i = 0; i < s; i++)
{
second.increment();
if(second.getvalue()==0)
{
minute.increment();
if(minute.getvalue() == 0)
{
hour.increment();
}
}
}
}
void print()
{
cout << hour.getvalue() << ":" << minute.getvalue() << ":" << second.getvalue() << endl;
}
};
int main()
{
int n;
cin >> n;
while (n--)
{
int h, m, s;
cin >> h >> m >> s;
int s1;
cin >> s1;
Clock c(h, m, s);
c.time(s1);
c.print();
}
return 0;
}