第九周实验报告二

来源:互联网 发布:大肚照艺术照软件 编辑:程序博客网 时间:2024/05/29 13:55
#include <iostream>       using namespace std;      class CTime      {      private:          unsigned short int hour;    // 时           unsigned short int minute;  // 分           unsigned short int second;  // 秒          bool is_time(int,int,int);//判断时间是否合法         public:          CTime(int h=0,int m=0,int s=0);          void setTime();          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秒前的时间         //重载流插入运算符“<<”            friend ostream& operator << (ostream&,CTime&);          //重载流提取运算符“>>”            friend istream& operator >> (istream&,CTime&);    };      CTime::CTime(int h,int m,int s)      {          hour=h;          minute=m;          second=s;      }     //输入函数定义     void CTime::setTime()      {        char c1,c2;        cout<<"请输入时间(格式 hh:mm:ss)";        while(1)        {            cin>>hour>>c1>>minute>>c2>>second;            if(c1!=':'||c2!=':')                cout<<"格式不正确,请重新输入"<<endl;            else if(!is_time(hour,minute,second))                cout<<"时间非法,请重新输入"<<endl;            else                break;        }    }    //判断函数是否合法     bool CTime::is_time(int h,int m,int s)    {        if(h<0||h>23||m<0||m>59||s<0||s>59)            return false;        return true;    }        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;            else               return false;        }        // 判断时间t1<t2      bool CTime::operator < (CTime &t)      {          if(hour<t.hour)              return true;          else if(hour>t.hour)              return false;          else if(minute<t.minute)              return true;          else if(minute>t.minute)              return false;          else if(second<t.second)              return true;          else              return false;      }      bool CTime::operator >= (CTime &t)//判断t1>=t2       {          if(*this<t)              return false;          else              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 || *this>t)              return false;           else              return true;        }       bool CTime::operator != (CTime &t) // 判断时间t1!=t2         {            if (*this==t)               return false;            else              return true;        }      //二目运算符的重载       CTime CTime::operator+(CTime &c)//返回c所规定的时、分、秒后的时间,例t1(8,20,25),t2(11,20,50),t1+t2为:41:15       {          int h,m,s;          h=hour+c.hour;          m=minute+c.minute;          s=second+c.second;          if(s>59)          {              s-=60;              m++;          }          if(m>59)          {              m-=60;              h++;          }          while(h>23)              h-=24;          CTime t(h,m,s);          return t;      }      CTime CTime::operator-(CTime &c)//对照+理解       {          int h,m,s;          h=hour-c.hour;          m=minute-c.minute;          s=second-c.second;          if(s<0)          {              s+=60;              m--;          }          if(m<0)          {              m+=60;              h--;          }          if(h<0)              h+=24;          CTime t(h,m,s);          return t;      }      CTime CTime::operator+(int s)//返回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)//返回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 temp=*this;          *this+=1;          return temp;      }      CTime CTime::operator++()//前置++,下一秒       {          *this+=1;          return *this;      }      CTime CTime::operator--(int)//后置--,前一秒       {          CTime temp=*this;          *this-=1;          return temp;      }      CTime CTime::operator--()//前置--,前一秒       {          *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;        }      ostream& operator << (ostream&output,CTime&c)      {           output<<c.hour <<":"<<c.minute <<":"<<c.second <<endl;           return output;      }         istream& operator >> (istream& input,CTime & c)      {           input>>c.hour>>c.minute>>c.second;          return input;      }      void main()      {          int n;        CTime t1,t2,t;         t1.setTime();        cout<<"t1为:";          t1.display();         t2.setTime();        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;          //下面自行设计对其他运算符的重载的测试           t1++;          cout<<"t1++为 ";          t1.display();          ++t2;          cout<<"++t2为 ";          t2.display();              t=t1+t2;          cout<<"t1+t2为: ";          t.display();          t=t1-t2;          cout<<"t1-t2为: ";          t.display();          t1+=t2;          cout<<"t1+=t2为: ";          t1.display();          t1-=t2;          cout<<"t1-=t2为: ";          t1.display();         cout<<endl;        cout<<"现在t1的时间是:";        t1.display();        cout<<"输入您想增加的时间以(秒)制:";        cin>>n;        cout<<"增加"<<n<<"秒后的时间为:";        t1=t1+n;        t1.display();        cout<<"现在t2的时间为:";        t2.display();        cout<<"输入您想减少的时间以(秒)制:";        cin>>n;        cout<<"减少"<<n<<"秒后的时间为:";        t2=t2-n;        t2.display();        system("pause");            }         


是不是有些能在VC2008中能运行的程序,不能在VC6.0中运行啊?

原创粉丝点击