第八周实验报告2

来源:互联网 发布:c语言常用单词 编辑:程序博客网 时间:2024/06/05 15:15
  1. 1./* (程序头部注释开始) 2.* 程序的版权和版本声明部分 3.* Copyright (c) 2011, 烟台大学计算机学院学生 4.* All rights reserved. 5.* 文件名称:                              6.* 作    者:   刘程程                            7.* 完成日期:   2012     年   04    月    10    日8.* 版 本 号:   1.0      9.10.* 对任务及求解方法的描述部分 11.* 输入描述: 时间 12.* 问题描述: 运算符重载,时间的计算 13.* 程序输出: 计算后的时间 14.* 程序头部的注释结束 15.*/ 16. #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;}//设置时间void CTime::setTime(int h, int m, int s){ hour=h; minute=m; second=s;}//显示时间void CTime::display(){ cout<<hour<<':'<<minute<<':'<<second<<endl;}//比较运算符的重载  bool CTime::operator > (CTime &t) // 判断时间t1>t2  {      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;      return false;  //老师这个写的真好,我写了那么多行,还弄不过来。。}  bool CTime::operator < (CTime &t)// 判断时间t1<t2  {      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;      return false;  }    bool CTime::operator == (CTime &t)// 判断时间t1==t2  {      if (*this<t || *this>t) return false;  //充分利用已经构造好的重载函数。。。。    return true;  }    bool CTime::operator != (CTime &t) // 判断时间t1!=t2  {      if (*this==t) return false;  //利用已经构造好的重载函数。。    return true;  }  bool CTime::operator >= (CTime &t)// 判断时间t1>=t2  {      if (*this<t) return false;      return true;  }    bool CTime::operator <= (CTime &t) // 判断时间t1<=t2  {      if (*this>t) return false;      return true;  }    //二目运算符的重载  // 计算时间之和, 返回c所规定的时、分、秒后的时间,例t1(8,20,25),t2(11,20,50),t1+t2为:41:15  CTime CTime::operator + (CTime &t)  {        int h,m,s;      s=second+t.second;      m=minute+t.minute;      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;  }    //返回s秒后的时间  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 &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--;      }      while (h<0) h+=24;      CTime t0(h,m,s);      return t0;  }    //返回s秒前的时间  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)//后置++,下一秒  {     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=*this+c;      return *this;  } CTime CTime::operator-=(CTime &c)  {      *this=*this-c;      return *this;  }  CTime CTime::operator+=(int s)//返回s秒后的时间  {      *this=*this+s;      return *this;  }  CTime CTime::operator-=(int s)//返回s秒前的时间  {      *this=*this-s;      return *this;  }    int 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;  cout << "t1+t2=";      t.display();        t = t1 - t2;     cout << "t1-t2=";      t.display();        t = t1 + 20;      cout << "t1增加20秒:";      t.display();        t = t1 - 30;      cout << "t1减少30秒:";      t.display();        t = t1;      t++;      cout << "t1++=";      t.display();       t = t2;      ++t;      cout << "++t2=";      t.display();        t = t1;      t--;      cout << "t1--=";      t.display();        t=t1;    --t;      cout << "--t2=";      t.display();        t = t1;      t+=12;      cout << "t1后12秒为:";      t.display();        t = t2;      t-=20;      cout << "t2前20秒为:";      t.display();      t = t1;      t+=t2;      cout << "t1+=t2为:";      t.display();        t = t1;      t-=t2;      cout << "t1-=t2为:";      t.display();        system("pause");  }   

  2.  

     

     
     

     

原创粉丝点击