题目描述
假定一个时钟包含时、分、秒三个属性,取值范围分别为0~11,0~59,0~59,具体要求如下:
1、用一元运算符++,并且是前增量的方法,实现时钟的调快操作。例如要把时钟调快5秒,则执行5次” ++<对象> “ 的操作
2、用一元运算符--,并且是后增量的方法,实现时钟的调慢操作。例如要把时钟调慢10秒,则执行10次” <对象>-- “的操作
3、用构造函数的方法实现时钟对象的初始化,用输出函数实现时钟信息的输出
clock是系统内部函数,所以不要用来做类名或者其他
输入
第一行输入时钟的当前时间时、分、秒
第二行输入t表示有t个示例
第三行输入t个整数x,如果x为正整数,则表示执行调快操作,使用重载运算符++;如果x为负整数,则表示执行调慢操作,使用重载运算符--
每次的调快或调慢操作都是承接上一次调整后的结果进行,例如先调快10秒,再调慢2秒,那么调慢2秒是接着调快10秒后的结果进行的
输出
每行输出每个时钟调整操作后的时分秒
-------------------------------------------------------
输入样例:
11 58 46
4
5 70 -22 -55
输出样例:
11:58:51
0:0:1
11:59:39
11:58:44
AC代码
#include <iostream>
using namespace std;
// 增量计数器类
class IncrementCounter
{
public:
IncrementCounter(int x, int y, int z) : shi(x), fen(y), miao(z) {} // 构造函数
IncrementCounter &operator++(); // 前增量,++*this
IncrementCounter operator++(int);
IncrementCounter &operator--();
IncrementCounter operator--(int);
void display()
{
cout << shi << ":" << fen << ":" << miao << endl;
} // 输出
private:
int shi, fen, miao;
};
// 前加加,++*this
IncrementCounter &IncrementCounter::operator++()
{
miao++;
if (miao > 59)
{
fen++;
miao = 0;
}
if (fen > 59)
{
shi++;
fen = 0;
}
if (shi > 11)
{
shi = 0;
}
return *this; // 再返回原对象
}
// 后加加,*this++
IncrementCounter IncrementCounter::operator++(int)
{
IncrementCounter temp = *this;
miao++;
if (miao > 59)
{
fen++;
miao = 0;
}
if (fen > 59)
{
shi++;
fen = 0;
}
if (shi > 11)
{
shi = 0;
}
return temp;
}
// 前减减,--*this
IncrementCounter &IncrementCounter::operator--()
{
miao--;
if (miao < 0)
{
fen--;
miao = 59;
}
if (fen < 0)
{
shi--;
fen = 59;
}
if (shi < 0)
{
shi = 11;
fen = 59;
miao = 59;
}
return *this; // 再返回原对象
}
// 后减减,*this--
IncrementCounter IncrementCounter::operator--(int)
{
IncrementCounter temp = *this;
miao--;
if (miao < 0)
{
fen--;
miao = 59;
}
if (fen < 0)
{
shi--;
fen = 59;
}
if (shi < 0)
{
shi = 11;
fen = 59;
miao = 59;
}
return temp;
}
// 主函数
int main()
{
int a, b, c;
cin >> a >> b >> c;
IncrementCounter p(a, b, c);
int t;
int flag = 0;
cin >> t;
while (t--)
{
int t1;
cin >> t1;
if (t1 < 0)
{
flag = 1;
t1 = -t1;
}
while (t1--)
{
if (flag == 1)
{
p--;
}
else
{
++p;
}
}
p.display();
}
return 0;
}