Problem I: 时间类的加、减法赋值运算

xiaoxiao2021-02-27  562

HomeWeb BoardProblemSetStandingStatusStatistics

Problem I: 时间类的加、减法赋值运算

Time Limit: 3 Sec   Memory Limit: 128 MB Submit: 5121   Solved: 3075 [ Submit][ Status][ Web Board]

Description

封装一个时间类Time,在类上重载以下运算符,使得main()函数能够正确运行。 1. Time::Time()无参构造方法。 2. Time::inputTime()方法:按格式从标准输入读取数据修改Time对象的时分秒数值。该方法返回修改后的对象。 3. Time::showTime()方法:输出“hh:mm:ss”,不足两位的要前面补0。如果对象不是合法的时间,则输出“Time error”。 4. 运算符 加法赋值运算符“+=”和减法赋值运算符“-=”:把一个整数m加到Time对象自身,并且仅对合法的时间操作,不会产生不合法的时间,比如: 若原时间对象为“00:00:00”,减去2后的对象为“23:59:58”; 若原时间对象为“23:59:59”,加上1后的对象为“00:00:00”; 若原时间对象为“24:60:60”,加减后的对象仍为“24:60:60” 函数调用格式见append.cc。 append.cc中已给出main()函数

Input

输入的第一个整数n,表示有n组测试数据,每组4个整数,前三个整数为:hh,mm,ss,分别表示时、分、秒,其值都在int范围内,最后一个整数为m。

Output

每个输入对应两行输出,分别为时间“hh,mm,ss”加上m秒和减去m秒后的值。错误的时间输出“Time error”

Sample Input

60 0 1 20 59 59 11 1 60 1023 0 0 6023 59 59 10024 1 0 3

Sample Output

00:00:0323:59:5901:00:0000:59:58Time errorTime error23:01:0022:59:0000:01:3923:58:19Time errorTime error

HINT

输出格式用头文件<iomanip>中流操作算子: setw(w)   :设置数据的输出宽度为w个字符 setfill(c):设置用字符c作为填充字符 left      :设置输出左对齐 right     :设置输出优对齐

Append Code

append.cc, [ Submit][ Status][ Web Board]

한국어<  中文 فارسی English ไทย All Copyright Reserved 2010-2011 SDUSTOJ TEAM GPL2.0 2003-2011 HUSTOJ Project TEAM Anything about the Problems, Please Contact Admin:admin

#include<iostream> #include<iomanip> using namespace std; class Time { private: int h,m,s; public: Time():h(0),m(0),s(0){} Time &inputTime(){cin>>h>>m>>s;return *this;} void showTime()const{ if(h>=0&&h<24&&m>=0&&m<60&&s>=0&&s<60) cout<<setw(2)<<setfill('0')<<h<<":"<<setw(2)<<setfill('0')<<m<<":"<<setw(2)<<setfill('0')<<s<<endl; else cout<<"Time error"<<endl; } Time &operator+=(int a) { if(h>=0&&h<24&&m>=0&&m<60&&s>=0&&s<60) { s+=a; while(s>=60) { s-=60; m++; } while(m>=60) { m-=60; h++; } while(h>=24) h-=24; } return *this; } Time &operator-=(int a) { if(h>=0&&h<24&&m>=0&&m<60&&s>=0&&s<60) { s-=a; while(s<0) { s+=60; m--; } while(m<0) { m+=60; h--; } while(h<0) h+=24; } return *this; } }; int main() { int cases; cin>>cases; for(int i = 1; i <= cases; ++i) { Time t; t.inputTime(); Time tt(t); int num; cin>>num; t += num; t.showTime(); tt -= num; tt.showTime(); } }
转载请注明原文地址: https://www.6miu.com/read-652.html

最新回复(0)