请为时间类添加加、减运算功能。
#include <iostream>
#include <iomanip>
using namespace std;
/* 你提交的代码将被嵌在这里 */
int main()
{
MYTIME a, b;
int s;
a.Input();
cin >> s;
b = a.Add(s);
b.Output();
cout << endl;
b = a.Sub(s);
b.Output();
cout << endl;
a.Input();
b.Input();
s = a.Sub(b);
cout << s << endl;
return 0;
}
输入样例1
8:59:59
2
17:3:9 17:3:5
输出样例1
Create 00:00:00
Create 00:00:00
Create 00:00:00
Assign 09:00:01
Destroy 09:00:01
09:00:01
Create 00:00:00
Assign 08:59:57
Destroy 08:59:57
08:59:57
4
Destroy 17:03:05
Destroy 17:03:09
输入样例2
10:30:0
-259202
17:3:5 17:3:9
输出样例2
Create 00:00:00
Create 00:00:00
Create 00:00:00
Assign 10:29:58
Destroy 10:29:58
10:29:58
Create 00:00:00
Assign 10:30:02
Destroy 10:30:02
10:30:02
-4
Destroy 17:03:09
Destroy 17:03:05
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
答案
class MYTIME
{
public:
void Input();//初始化对象
void Output();//输出时间
void Set(int hour_1 = 0, int minute_1 = 0, int second_1 = 0);//初始化对象(带默认)
void Get(int& hour_1, int& minute_1, int& second_1);//获取对象时间
void Hour(int hour_1);//初始化小时成员
void Minute(int minute_1);//初始化分钟成员
void Second(int second_1);//初始化秒针成员
int Hour();//输出hour成员
int Minute();//输出minute成员
int Second();//输出second成员
MYTIME();//构造
MYTIME(int hour_1);//构造
MYTIME(int hour_1, int minute_1);//构造
MYTIME(int hour_1, int minute_1, int second_1);//构造
MYTIME(const MYTIME& time);//拷贝构造
~MYTIME();//析构
MYTIME& operator=(const MYTIME &time);//"="运算重载
void TotalSecond(int sec);//计算增加后的时间
int TotalSecond();//计算总秒数
MYTIME Add(int sec);
MYTIME Sub(int sec);
int Sub(MYTIME &subed);
private:
int hour, minute, second;
};
int MYTIME::Sub(MYTIME &subed)
{
return this->TotalSecond() - subed.TotalSecond();
}
MYTIME MYTIME::Add(int sec)
{
MYTIME sum;
sum.TotalSecond(this->TotalSecond());
sum.TotalSecond(sec);
return sum;
}
MYTIME MYTIME::Sub(int sec)
{
return Add(-sec);
}
void MYTIME::TotalSecond(int sec)
{
while(sec<0)
sec += 86400;
int se = second + sec % 3600 % 60;
int mi = minute + sec % 3600 / 60;
int ho = hour + sec / 3600;
second = se % 60;
minute = (mi + se / 60) % 60;
hour = (ho + (mi + se / 60) / 60) % 24;
}
int MYTIME::TotalSecond()
{
return hour * 3600 + minute * 60 + second;
}
MYTIME &MYTIME::operator=(const MYTIME &time)
{
if (this == &time)//防止s=s赋值
return *this;
this->hour = time.hour;
this->minute = time.minute;
this->second = time.second;
cout << "Assign ";
this->Output();
cout << endl;
return *this;
}
MYTIME::MYTIME()
{
hour = 0;
minute = 0;
second = 0;
cout << "Create ";
Output();
cout << endl;
}
MYTIME::MYTIME(int hour_1)
{
hour = hour_1;
minute = 0;
second = 0;
cout << "Create ";
Output();
cout << endl;
}
MYTIME::MYTIME(int hour_1, int minute_1)
{
hour = hour_1;
minute = minute_1;
second = 0;
cout << "Create ";
Output();
cout << endl;
}
MYTIME::MYTIME(int hour_1, int minute_1, int second_1)
{
hour = hour_1;
minute = minute_1;
second = second_1;
cout << "Create ";
Output();
cout << endl;
}
MYTIME::~MYTIME()
{
cout << "Destroy ";
Output();
cout << endl;
}
int MYTIME::Hour()
{
return hour;
}
int MYTIME::Minute()
{
return minute;
}
int MYTIME::Second()
{
return second;
}
void MYTIME::Hour(int hour_1)
{
hour = hour_1;
}
void MYTIME::Minute(int minute_1)
{
minute = minute_1;
}
void MYTIME::Second(int second_1)
{
second = second_1;
}
void MYTIME::Input()
{
scanf("%d:%d:%d", &hour, &minute, &second);
}
void MYTIME::Output()
{
printf("%02d:%02d:%02d", hour, minute, second);
}
void MYTIME::Set(int hour_1, int minute_1, int second_1)
{
hour = hour_1;
minute = minute_1;
second = second_1;
}
void MYTIME::Get(int& hour_1, int& minute_1, int& second_1)
{
hour_1 = hour;
minute_1 = minute;
second_1 = second;
}
MYTIME::MYTIME(const MYTIME& time)
{
hour = time.hour;
minute = time.minute;
second = time.second;
cout << "Clone ";
Output();
cout << endl;
}