Unit9-problem2 时间类
2014-04-28 20:27
176 查看
/*Univercity:烟台大学 *@Class</A>计134~4 *@Author:薛富磊 *@Time:2014-4-28 *@Function: *@Args: *@Return: */ #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):hour(h),minute(m),second(s){}; 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++(int);//后置++,下一秒 CTime operator++();//前置++,下一秒 CTime operator--(int);//后置--,前一秒 CTime operator--();//前置--,前一秒 //二目的加减运算符的重载 //返回t规定的时、分、秒后的时间,例t1(8,20,25),t2(11,20,50),t1+t2为:41:15 CTime operator+(CTime &t); CTime operator-(CTime &t);//对照+理解 CTime operator+(int s);//返回s秒后的时间 CTime operator-(int s);//返回s秒前的时间 //二目赋值运算符的重载 CTime operator+=(CTime &c); CTime operator-=(CTime &c); CTime operator+=(int s);//返回s秒后的时间 CTime operator-=(int s);//返回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) { if(hour*3600+minute*60+second>t.hour*3600+t.minute*60+t.second) return true; else return false; } bool CTime::operator < (CTime &t) { if(hour*3600+minute*60+second<t.hour*3600+t.minute*60+t.second) return true; else return false; } bool CTime::operator >= (CTime &t) { if(*this<t) return false; else return true; } bool CTime::operator <= (CTime &t) { if(*this>t) return false; else return true; } bool CTime::operator == (CTime &t) { if(*this<t||*this>t) return false; else return true; } bool CTime::operator != (CTime &t) { if(*this<t||*this>t) return true; else return false; } //一目运算符的重载 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 &t) { CTime c; c.hour=hour+t.hour; c.minute=minute+t.minute; c.second=second+t.second; if(c.hour>=24) c.hour=c.hour-24; if(c.minute>=60) { c.hour+=1; c.minute=c.minute-60; } if(c.second>=60) { c.minute+=1; c.second=c.second-60; } return c; } CTime CTime::operator-(CTime &t) { CTime c; if(hour-t.hour<=0) c.hour=24-t.hour+hour; else c.hour=hour-t.hour; if(minute-t.minute<0) { c.hour-=1; c.minute=60-t.minute+minute; } else c.minute=minute-t.minute; if(second-t.second<0) { c.minute-=1; c.second=60-t.second+second; } else c.second=second-t.second; return c; } CTime CTime::operator+(int s) { CTime c; int d; d=hour*3600+minute*60+second+s; c.hour=d/3600; c.minute=(d%3600)/60; c.second=(d%3600)%60; return c; } CTime CTime::operator-(int s) { CTime c; int d; d=hour*3600+minute*60+second-s; c.hour=d/3600; c.minute=(d%3600)/60; c.second=(d%3600)%60; return c; } //二目赋值运算符的重载 CTime CTime::operator+=(CTime &t) { *this=*this+t; return *this; } CTime CTime::operator-=(CTime &t) { *this=*this-t; return *this; } CTime CTime::operator+=(int s) { *this=*this+s; return *this; } CTime CTime::operator-=(int s) { *this=*this-s; return *this; } //自行编制用于测试的main()函数,有些结果不必依赖display()函数,提倡用单步执行查看结果 int main() { CTime t1(10,28,25),t2(10,27,50),t3,t4,t5,t6,t7,t8,t9,t10; 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=="<<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++"<<endl; t3=t1++; t3.display(); cout<<endl; cout<<"++t1"<<endl; t4=++t1; t4.display(); cout<<endl; cout<<"t1--"<<endl; t5=t1++; t5.display(); cout<<endl; cout<<"--t1"<<endl; t6=++t1; t6.display(); cout<<endl; t7=t1+t2; cout<<"t1+t2="; t7.display(); cout<<endl; cout<<"t1-t2="; t8=t1-t2; t8.display(); cout<<endl; cout<<"t1+777="; t9=t1+777; t9.display(); cout<<endl; cout<<"t1-77="; t10=t1-77; t10.display(); return 0; } /**/
相关文章推荐
- Unit3--problem2神算子—造价师
- CCAnimation::setDelayPerUnit(float v); // 设置两帧之间的时间间隔
- Problem F: 时间类的常量
- Problem D: 时间和日期类(IV)
- Problem D: 时间类的12小时制输出
- hadoop 开始时间datanode一个错误 Problem connecting to server
- Problem D: 时间和日期类(IV)
- Problem G: 时间类的12小时制输出
- OJ第三批——Problem O:B C++时间类的运算符重载
- Problem H: 时间类的静态成员计数
- Problem E: 时间类的静态成员计数
- SDUSTOJ Problem D: 时间类的构造和输出
- POJ 3320 Jessica's Reading Problem (尺取法,时间复杂度O(n logn))
- Problem I: 时间类的加、减法赋值运算
- Problem F: 时间类的加、减法赋值运算
- Problem G: 时间类的流插入、提取和递增、递减运算
- Unit8-problem1_友元类重载
- Unit14_problem1.1-动物怎么叫
- SDUSTOJ Problem E: 时间类的成员读写
- Problem J: 时间类的流插入、提取和递增、递减运算