第12周项目2-时间类

来源:互联网 发布:软件停止工作怎么办 编辑:程序博客网 时间:2024/06/10 02:27
/*Copyright (c)2016,烟台大学计算机与控制工程学院  *All rights reserved.  *文件名称:my.cpp  *作    者:张瀚文  *完成日期:2016年5月28日  *  * 问题描述: 实现Time类中的运算符重载。     */#include <iostream>using namespace std;class CTime{private:    unsigned short int hour;    unsigned short int sec;    unsigned short int minu;public:    CTime(int h=0,int m=0,int s=0);    void setTime(int h,int m,int s)    {        hour=h;        minu=s;        sec=s;    }  friend ostream &operator<<(ostream &out,CTime &c);    void display();    //二目运算符的比较    bool operator>(CTime &c);    bool operator<(CTime &c);    bool operator>=(CTime &c);    bool operator<=(CTime &c);    bool operator==(CTime &c);    bool operator!=(CTime &c);    //二目的加减运算符的重载    //返回t规定的时分秒后的时间    //例 t1(8,20,25),t2(11,20,50),t1+t2为19:41:15    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--();//前置--,前一秒};ostream &operator<<(ostream &out,CTime &c){    out<<c.hour<<':'<<c.minu<<':'<<c.sec;    return out;}CTime::CTime(int h,int m,int s){    if(h>=0&&h<=24&&m>=0&&m<=60&&s>=0)   {    hour=h;    minu=m;    sec=s;   }    else    cout<<"error"<<endl;}CTime CTime:: operator++(int ){    CTime c=*this;    *this=*this+1;    return c;}CTime &CTime ::operator++(){  *this=*this+1;   return *this;}CTime &CTime ::operator--(){    *this=*this-1;   return *this;}CTime CTime::operator--(int){    CTime c=*this;    *this=*this-1;    return c;}bool CTime::operator<=(CTime &c){    if(hour<=c.hour)return true;    if(hour>c.hour)return false;    if(minu<=c.minu)return true;    if(minu>c.minu)return false;    if(sec<=c.sec)return true;    return false;}bool CTime::operator>=(CTime &c){   if(hour>=c.hour)return true;    if(hour<c.hour)return false;    if(minu>=c.minu)return true;    if(minu<c.minu)return false;    if(sec>=c.sec)return true;    return false;}bool CTime::operator<(CTime &c){    if (hour<c.hour) return true;    if (hour>c.hour) return false;    if (minu<c.minu) return true;    if (minu>c.minu) return false;    if (sec<c.sec) return true;    return false;}bool CTime::operator>(CTime &c){     if (hour>c.hour) return true;    if (hour<c.hour) return false;    if (minu>c.minu) return true;    if (minu<c.minu) return false;    if (sec>c.sec) return true;    return false;}bool CTime::operator==(CTime &t){    if(*this>t||*this<t)return false;    return true;}bool CTime::operator!=(CTime &t){    if(*this==t)return false;    return true;}CTime &CTime::operator+=(CTime &t){    *this=*this+t;    return *this;}CTime &CTime::operator-=(CTime &t){    *this=*this-t;    return *this;}CTime CTime::operator+(CTime &t){    int h,s,m;   s=sec+t.sec;    m=minu+t.minu;    h=hour+t.hour;    if (s>59)    {        s-=60;        m++;    }    if (m>59)    {        m-=60;        h++;    }    while (h>23) h-=24;    CTime t0(h,m,s);    return t0;}CTime CTime::operator-(CTime &t){ int h,s,m;   s=sec-t.sec;    m=minu-t.minu;    h=hour-t.hour;    if (s<0)    {        s+=60;        m--;    }    if (m<0)    {        m+=60;        h--;    }    while (h<0) h+=24;    CTime t0(h,m,s);    return t0;}CTime CTime::operator+(int s){    int ss=s%60;    int m=(s/60)%60;    int h=s/3600;        CTime c(h,m,ss);    return *this+c;}CTime CTime::operator-(int s){    int ss=s%60;    int m=(s/60)%60;    int h=s/3600;        CTime c(h,m,ss);    return *this-c;}CTime &CTime::operator+=(int s){    *this=*this+s;    return *this;}CTime &CTime::operator-=(int s){    *this=*this-s;    return *this;}int main(){CTime t1(12,24,20),t2(13,20,30),t;cout<<"t1= "<<t1<<endl;cout<<"t2= "<<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;    if (t1<=t2) cout<<"t1≤t2"<<endl;    cout<<endl;    cout<<"t1= "<<t1<<endl;    cout<<"t2= "<<t2<<endl;    cout<<"t=t1++"<<endl;    t=t1++;    cout<<"t= "<<t<<"    t1= "<<t1<<endl;    cout<<"t=++t1"<<endl;    t=++t1;    cout<<"t= "<<t<<"    t1= "<<t1<<endl;      t=t1+t2;    cout<<"t1+t2= "<<t<<endl;    t=t1-t2;    cout<<"t1-t2= "<<t<<endl;    t=t1+2000;    cout<<"t1+2000= "<<t<<endl;    t=t1-5000;    cout<<"t1-5000= "<<t<<endl;    return 0;}

0 0
原创粉丝点击