第八周实验报告2

来源:互联网 发布:中国 中子弹 知乎 编辑:程序博客网 时间:2024/06/08 06:45
/* (程序头部注释开始)   * 程序的版权和版本声明部分   * Copyright (c) 2011, 烟台大学计算机学院学生    * All rights reserved.   * 文件名称:   Student.cpp               * 作    者:   计114-4 刘柏蔚   * 完成日期:    2012年   34 月  10日   * 版 本 号:    V 1.0      * 对任务及求解方法的描述部分   * 输入描述:  * 问题描述:    * 程序输出:按要求输出    * 程序头部的注释结束   */#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 &c);//返回c所规定的时、分、秒后的时间,例t1(8,20,25),t2(11,20,50),t1+t2为:41:15      CTime operator-(CTime &c);//对照+理解      CTime operator+(int s);//返回s秒后的时间      CTime operator-(int s);//返回s秒前的时间      //一目运算符的重载      CTime operator++(int);//后置++,下一秒      CTime operator++();//前置++,下一秒      CTime operator--(int);//后置--,前一秒      CTime operator--();//前置--,前一秒      //赋值运算符的重载          CTime operator+=(CTime &c);      CTime operator-=(CTime &c);      CTime operator+=(int s);//返回s秒后的时间      CTime operator-=(int s);//返回s秒前的时间  };  //下面实现所有的运算符重载代码。为简化编程,请注意通过调用已有函数,利用好各函数之间的关系    //构造函数的定义  CTime::CTime(int h,int m,int s):hour(h),minute(m),second(s){}    //实现setTime函数  void CTime::setTime(int h,int m,int s)  {      hour=h;      minute=m;      second=s;  }    //比较运算符(二目)的重载  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;      else false;  }    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;      else false;  }    bool CTime::operator >= (CTime &t)  {     if(*this<t) return false;     else true;  }    bool CTime::operator <= (CTime &t)  {       if(*this>t) return false;      else true;  }    bool CTime::operator == (CTime &t)  {      if(*this<t||*this>t) return false;      else  true;  }    bool CTime::operator != (CTime &t)  {     if(*this==t) return false;      else true;  }    //二目运算符的重载  //返回c所规定的时、分、秒后的时间,例t1(8,20,25),t2(11,20,50),t1+t2为:41:15  CTime CTime::operator+(CTime &c)  {      int h,m,s;      s=second+c.second;      m=minute+c.minute;      h=hour+c.hour;      if(second>59)      {         second-=60;         minute+=1;      }      if(minute>59)      {          minute-=60;          hour+=1;      }      while(h>23) h-=24;      CTime t0(h,m,s);      return t0;  }    //对照+理解  CTime CTime::operator-(CTime &c)  {      int h,m,s;      s=second-c.second;      m=minute-c.minute;      h=hour-c.hour;      if(second<0)      {          second+=60;          minute-=1;      }      if(minute<0)      {          minute+=60;          hour-=1;      }      while(h<0) h+=24;      CTime t0(h,m,s);      return t0;  }  //返回s秒后的时间  CTime CTime::operator+(int s)  {      int hh,mm,ss;      ss=ss%60;      mm=(ss/60)%60;      hh=ss/3600;      CTime t0(hh,mm,ss);      return t0;  }    //返回s秒前的时间  CTime CTime::operator-(int s)  {      int hh,mm,ss;      ss=ss%60;      mm=(ss/60)%60;      hh=ss/3600;      CTime t0(hh,mm,ss);      return t0;  }    //一目运算符的重载  //后置++,下一秒  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;  }    //赋值运算符的重载      CTime CTime::operator+=(CTime &c)  {      *this+=c;      return *this;  }    CTime CTime::operator-=(CTime &c)  {      *this-=c;      return *this;  }    //返回s秒后的时间  CTime CTime::operator+=(int s)  {      *this+=s;      return *this;  }    //返回s秒前的时间  CTime CTime::operator-=(int s)  {      *this-=s;      return *this;  }    void main()  {      CTime t1(8,20,25),t2(11,20,50),t;      cout<<"t1为:";      t1.display();      cout<<"t2为:";      t2.display();      cout<<"下面比较两个时间大小:\n";      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;      //下面自行设计对其他运算符的重载的测试      t=t1+t2;      t=t1-t2;      t=t1+20;      t=t1-10;      t=t1++;      t=++t1;      t=t1--;      t=--t1;      t1+=t2;      t1-=t2;      t1+=2000;      t1-=2000;  }
我觉的很方便啊,以后再有三次方什么的就不用每次都***了
原创粉丝点击