关闭

第12周项目2-时间类

141人阅读 评论(0) 收藏 举报
/*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

猜你在找
【直播】机器学习&数据挖掘7周实训--韦玮
【套餐】系统集成项目管理工程师顺利通关--徐朋
【直播】3小时掌握Docker最佳实战-徐西宁
【套餐】机器学习系列套餐(算法+实战)--唐宇迪
【直播】计算机视觉原理及实战--屈教授
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之矩阵--黄博士
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之凸优化--马博士
【套餐】Javascript 设计模式实战--曾亮
查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:14657次
    • 积分:626
    • 等级:
    • 排名:千里之外
    • 原创:50篇
    • 转载:2篇
    • 译文:0篇
    • 评论:0条