第十一周项目50-Time类中的运算符重载

问题及代码:

/*
*Copyright (c) 2015,烟台大学计算机学院
*All rights reserved.
*文件名称:text.cpp
*作者:徐健
*完成日期:2015年5月15日
*版本号:v1.0
*
*问题描述:  实现time类的运算符重载
*输入描述: 无
*程序输出: 求time类运算符重载后的结果
*/
#include <iostream>
using namespace std;
class CTime
{
private :
    unsigned short int hour;
    unsigned short int minute;
    unsigned short int second;
public :
    CTime (int h=0,int m=0,int s=0);
    void setTime(int h,int m,int s);
    void display();
    bool operator >(CTime &t);
    bool operator <(CTime &t);
    bool operator >=(CTime &t);
    bool operator <=(CTime &t);
    bool operator ==(CTime &t);
    bool operator !=(CTime &t);
    CTime operator +(CTime &t);
    CTime operator -(CTime &t);
    CTime operator +(int s);
    CTime operator -(int s);
    CTime &operator +=(CTime &c);
    CTime &operator -=(CTime &c);
    CTime &operator +=(int s);
    CTime &operator -=(int s);
    CTime operator ++(int );
    CTime operator ++();
    CTime operator --(int );
    CTime operator --();

};
CTime::CTime (int h,int m,int s):hour(h),minute(m),second(s)
{

}
    void CTime::setTime(int h,int m,int s)
    {
        minute=m;
        hour=h;
        second=s;
    }
    void CTime::display()
    {
        cout<<hour<<":"<<minute<<":"<<second<<endl;
    }
    bool CTime::operator >(CTime &t)
    {
        if(hour>t.hour)return true;
        if(hour<t.hour)return false;
        if(minute>t.minute)return true;
        if(minute<t.minute)return false;
        if(second>t.second)return true;
        if(second<t.second)return false;
    }
    bool CTime::operator <(CTime &t)
    {
        if(hour>t.hour)return false;
        if(hour<t.hour)return true;
        if(minute>t.minute)return false;
        if(minute<t.minute)return true;
        if(second>t.second)return false;
        if(second<t.second)return true;
    }
    bool CTime::operator >=(CTime &t)
    {
        if(*this<t)return false;
        return true;
    }
    bool CTime::operator <=(CTime &t)
    {
        if(*this>t)return false;
        return true;
    }
    bool CTime::operator ==(CTime &t)
    {
        if(*this<t||*this>t)return false;
        return true;
    }
    bool CTime::operator !=(CTime &t)
    {
        if(*this>t||*this<t)return true;
        return false;
    }
    //当两个不规范的时间相加时可以用此方法
    CTime CTime::operator +(CTime &t)
    {
        int h,m,s;
        h=hour+t.hour;
        m=minute+t.minute;
        s=second+t.second;
        if(s>=60){
            s=s%60;
            m=m+s/60;
        }
        if(m>=60){
            m=m%60;
            h=h+m/60;
            }
        if(h>=24)
            h=h%24;
        CTime tt(h,m,s);
        return tt;
    }
    //当两个规范的时间相减时可以用此方法
    CTime CTime::operator -(CTime &t)
    {
        int h,m,s;
        s=second-t.second;
        m=minute-t.minute;
        h=hour-t.hour;
        if (s<0)
        {
            s+=60;
            m--;
        }
        if (m<0)
        {
            m+=60;
            h--;
        }
        if (h<0) h+=24;
        CTime tt(h,m,s);
        return tt;

    }
    CTime CTime::operator +(int s)
    {
        int ss=s%60;
        int mm=(s/60)%60;
        int hh=s/3600;
        CTime t0(hh,mm,ss);
        return *this+t0;

    }
    CTime CTime::operator -(int s)
    {
        int ss=s%60;
        int mm=(s/60)%60;
        int hh=s/3600;
        CTime t0(hh,mm,ss);
        return *this-t0;
    }
    CTime &CTime::operator +=(CTime &c)
    {
        *this=*this+c;
        return *this;

    }
    CTime &CTime::operator -=(CTime &c)
    {
        *this=*this-c;
        return *this;

    }
    CTime &CTime::operator +=(int s)
    {
        *this=*this+s;
        return *this;
    }
    CTime &CTime::operator -=(int s)
    {
        *this=*this-s;
        return *this;
    }
    CTime CTime::operator ++(int )
    {
        CTime t=*this;
        *this=*this+1;
        return t;
    }
    CTime CTime::operator ++()
    {
        *this=*this+1;
        return *this;
    }
    CTime CTime::operator --(int )
    {
        CTime t=*this;
        *this=*this-1;
        return t;
    }
    CTime CTime::operator --()
    {
        *this=*this-1;
        return *this;
    }
int main()
{
CTime t1(12,22,31),t2(19,20,55),t;
    cout<<"t1为:";
    t1.display();
    cout<<"t2为:";
    t2.display();
    if (t1>t2) cout<<"t1>t2"<<endl;
    if (t1<t2) cout<<"t1<t2"<<endl;
    if (t1==t2) cout<<"t1=t2"<<endl;
    if (t1!=t2) cout<<"t1≠t2"<<endl;
    if (t1>=t2) cout<<"t1≥t2"<<endl;
    if (t1<=t2) cout<<"t1≤t2"<<endl;
    t=t1+t2;
    t=t1-t2;
    t=t1+3000;
    t=t1-7000;
    t1+=t2;
    t1-=t2;
    t1+=3000;
    t1-=7000;
    return 0;
}
运行结果:



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值