6-7 时间类 - 7. 加法和减法

请为时间类添加加、减运算功能。

#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;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

拾-光

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值