3740 - C++作业4-3:设计一个多功能的MyTime类(分值很大)

通过次数

0

提交次数

0

时间限制 : 1 秒 内存限制 : 32 MB

设计一个多功能的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;
}