请为时间类添加时间与总秒数的换算功能。
#include <iostream>
#include <iomanip>
using namespace std;
/* 你提交的代码将被嵌在这里 */
int main()
{
MYTIME a;
int s;
cin >> s;
a.TotalSecond(s);
a.Output();
cout << endl;
a.Input();
s = a.TotalSecond();
cout << s << endl;
return 0;
}
输入样例1
1
8:30:45
输出样例1
Create 00:00:00
00:00:01
30645
Destroy 08:30:45
输入样例2
-172801
19:15:28
输出样例2
Create 00:00:00
23:59:59
69328
Destroy 19:15:28
注:本题中的总秒数是指当天的总秒数。若给出的值不在 [0, 86399] 内,则需要进行适当的转换。例如:86401 等价于1,-1 等价于 86399。
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
答案
class MYTIME {
private:
int second=0;
int hour=0;
int minute=0;
public:
void Input()
{
char sign = ':';
cin >> hour >> sign >> minute >> sign >> second;
}
MYTIME()
{
cout << "Create" << ' ' << setfill('0') << setw(2) << hour << ':'
<< setfill('0') << setw(2) << minute << ':'
<< setfill('0') << setw(2) << second << endl;
}
void TotalSecond(int s)
{
if(s >= 0 && s <= 86399)
{
hour = s / 3600;//8
minute = (s - 3600 * hour) / 60;
second = (s - 3600 * hour) - 60 * minute;
}
if(s >= 86400)
{
s %= 86400;
hour = s / 3600;//8
minute = (s - 3600 * hour) / 60;
second = (s - 3600 * hour) - 60 * minute;
}
if(s <= -1)
{
while(s <= -1)
s += 86400;
hour = s / 3600;//8
minute = (s - 3600 * hour) / 60;
second = (s - 3600 * hour) - 60 * minute;
}
}
void Output()
{
cout << setfill('0') << setw(2) << hour << ':'
<< setfill('0') << setw(2) << minute << ':'
<< setfill('0') << setw(2) << second;
}
~MYTIME()
{
cout << "Destroy" << ' ' << setfill('0') << setw(2) << hour << ':'
<< setfill('0') << setw(2) << minute << ':'
<< setfill('0') << setw(2) << second;
}
int TotalSecond()
{
return (hour * 3600 + minute * 60 + second);
}
};