3740 - C++作业4-3:设计一个多功能的MyTime类(分值很大)
设计一个多功能的MyTime类,设计多个重载的构造函数,可以设置时间,进行时间的加减运算,按各种可能的格式(24小时制、12小时制)输出时间。
注意:
(1)请考虑设置的时间的合理性(时0-23; 分0-59;秒0-59)。
(2)12小时制中,12:00:00前为AM, 12:00:00及以后为PM
(3)加减运算的加数、减数是一个时间的长度,单位为“时、分、秒”
(4)构造函数:没参数时,设置时间为0时 0分 0秒;有参数时,设置成给定的时、分、秒。
在主函数中
(1)声明两个对象t1,t2,并通过构造函数初始化它们(t2初始化为为8:10:30)
(2)显示按12、24小时制显示t1、t2的时间。
(3)再设置t1的时间,数据由用户输入。
(4)再输入待加减的时间。
(5)t1加输入的时间,并按12小时和24小时制显示。
(6)t2减输入的时间,并按12小时和24小时制显示。
题目输入
第一行为t1的时间,第二行为待加减的时间
例如:
11 30 30
5 15 20
<br />
题目输出
显示按12、24小时制显示t1、t2的初始时间
t1加输入的待加减的时间按12小时和24小时制显示。
t2减输入的待加减的时间按12小时和24小时制显示
例如:
00:00:00 AM
00:00:00
08:10:30 AM
08:10:30
04:45:50 PM
16:45:50
02:55:10 AM
02:55:10
<br />
输入/输出样例
题目输入
11 30 30 5 15 20
题目输出
00:00:00 AM 00:00:00 08:10:30 AM 08:10:30 04:45:50 PM 16:45:50 02:55:10 AM 02:55:10
提示
注意:时间加减的计算
C++解答
#include<iostream> #include<iomanip> using namespace std; class MyTime{ public: MyTime(); MyTime(int N_hour,int N_minute,int N_second); void SetTime(int S_hour,int S_minute,int S_second); void AddTime(int O_hour,int O_minute,int O_second); void MinusTime(int O_hour,int O_minute,int O_second); void ShowTime(); private: int hour,minute,second; }; MyTime::MyTime(){ hour=0,minute=0,second=0; } MyTime::MyTime(int N_hour,int N_minute,int N_second){ hour=N_hour,minute=N_minute,second=N_second; } void MyTime::SetTime(int S_hour,int S_minute,int S_second){ hour=S_hour,minute=S_minute,second=S_second; } void MyTime::AddTime(int O_hour,int O_minute,int O_second){ if ((second+=O_second)>59){ second-=60; minute+=1; } if ((minute+=O_minute)>59){ minute-=60; hour+=1; } if ((hour+=O_hour)>23){ hour-=24; } } void MyTime::MinusTime(int O_hour,int O_minute,int O_second){ if ((second-=O_second)<0){ second+=60; minute-=1; } if ((minute-=O_minute)<0){ minute+=60; hour-=1; } if ((hour-=O_hour)<0){ hour+=24; } } void MyTime::ShowTime(){ if(hour<12){ cout<<setw(2)<<setfill('0')<<hour<<":" <<setw(2)<<setfill('0')<<minute<<":" <<setw(2)<<setfill('0')<<second<<" AM"; } else{ cout<<setw(2)<<setfill('0')<<hour-12<<":" <<setw(2)<<setfill('0')<<minute<<":" <<setw(2)<<setfill('0')<<second<<" PM"; } cout<<endl; cout<<setw(2)<<setfill('0')<<hour<<":" <<setw(2)<<setfill('0')<<minute<<":" <<setw(2)<<setfill('0')<<second; } int main(){ int hour,minute,second,O_hour,O_minute,O_second; MyTime T1,T2(8,10,30); cin>>hour>>minute>>second; cin>>O_hour>>O_minute>>O_second; T1.ShowTime(); cout<<endl; T2.ShowTime(); cout<<endl; T1.SetTime(hour,minute,second); T1.AddTime(O_hour,O_minute,O_second); T2.MinusTime(O_hour,O_minute,O_second); T1.ShowTime(); cout<<endl; T2.ShowTime(); return 0; }
提示
注意:时间加减的计算