2023.4.17编程一小时打卡

发布时间 2023-04-17 21:06:45作者: 信2211-8李欣垚

一、问题描述:

设计一款电子钟类,用于显示时、分、秒。

实验要求:

  1. 含有形参有默认值的默认构造函数;
  2. 重载 前缀++ 和 后缀—用于调整时间,每次调整均对秒进行调整,若秒满60,则分加1,若分满60则时加1,时满24,则清零重新开始;
  3. 重载插入运算符 >> 用于输入(设定)时间;
  4. 重载插入运算符 << 用于输出时间。

二、解题思路:

首先,定义一个时钟类,然后根据实验要求去进行运算符重载,前缀++的定义需要考虑秒到达60后要重置等。然后,根据输入输出要求去实现所需功能。

三、代码实现:

#include<iostream>
#include<string>
using namespace std;
class Clock
{
private:
	int hour,minute,second;
public:
	Clock(int h=0,int m=0,int s=0):hour(h),minute(m),second(s){}
	Clock & operator++();
    Clock operator--(int);
	friend istream & operator>>(istream &,Clock &); 
	friend ostream & operator<<(ostream &,Clock &);
};
Clock & Clock::operator++()
{
	second++;
	if(second>=60)
	{
		minute++;
		second=0;
		if(minute>=60)
		{
			hour=(hour+1)%24;
			minute=0;
		}
	}
	return *this;
}
Clock Clock::operator--(int)
{
	--second;
	if(second<0)
	{
		second=60+second;
		minute--;
		if(minute<0)
		{
			hour--;
			minute=60+minute;
			if(hour<0)
			{
				hour=24+hour;
			}
		}
	}
	return *this;
}
istream & operator>>(istream &put,Clock &c)
{
	put>>c.hour>>c.minute>>c.second;
	return put;
}
ostream & operator<<(ostream &out,Clock &c)
{
	out<<c.hour<<":"<<c.minute<<":"<<c.second<<endl;
	return out;
}
int main()
{	
	Clock c;
	cin>>c;
	cout<<c;
	++c;
    cout<<c;
	c--;
	cout<<c;
	return 0;
}