第八周实验报告二
来源:互联网 发布:centos7 pdo mysql 编辑:程序博客网 时间:2024/06/05 06:33
#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) { 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 if(second<t.second ) return false; return false; } 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 if(second>t.second ) return false; return false; } bool CTime::operator >= (CTime &t) { CTime t1; t1.hour =hour; t1.minute =minute ; t1.second =second ; if (t1<t) return false; return true; } bool CTime::operator <= (CTime &t) { CTime t1; t1.hour =hour; t1.minute =minute ; t1.second =second ; if (t1>t) return false; return true; } bool CTime::operator == (CTime &t) { CTime t1; t1.hour =hour; t1.minute =minute ; t1.second =second ; if (t1>t) return false; if (t1<t) return false; return true; } bool CTime::operator != (CTime &t) { CTime t1; t1.hour =hour; t1.minute =minute ; t1.second =second ; if(t1==t) return false; return true; } //二目运算符的重载 CTime CTime::operator+(CTime &c)//返回c所规定的时、分、秒后的时间,例t1(8,20,25),t2(11,20,50),t1+t2为:41:15 { CTime t; t.hour =hour+c.hour ; t.minute =minute+c.minute ; t.second =second +c.second ; if (t.second >59) //思考:if中的两条语句能否交换顺序?为什么不能?后果将是……? { t.minute=(t.minute +t.second/60); //增加sec/60分钟 if (t.minute>59) { t.hour=(t.hour+t.minute/60); if (t.hour>23) t.hour=(t.hour %24); t.minute=(t.minute %60); } t.second=(t.second %60); //秒数应该是sec%=60 } if (t.minute>59) { t.hour=(t.hour +t.minute/60); if (t.hour>23) t.hour=(t.hour %24); t.minute=(t.minute %60); } if (t.hour>23) t.hour=(t.hour %24); //此程序不涉及日期,如果设计类DateTime,修改将继续下去 return t; } CTime CTime::operator-(CTime &c)//对照+理解 { CTime t; unsigned short int k,h; t.hour =hour; t.minute =minute ; t.second =second ; if(second<c.second ) { k=(-(second-c.second) )%60; h=(-(second-c.second ))/60; t.second =(60-k); t.minute =(minute-h-1); if(t.minute<0) { t.minute =(-t.minute ); k=t.minute %60; h=t.minute /60; t.hour=t.hour-h-1; t.minute =(60-k); if(t.hour<0) { t.hour =(-t.hour ); t.hour =(t.hour %24); } } } else { t.second =second-c.second ; } if(t.minute<c.minute ) { h=(-(t.minute -c.minute ))%60; k=(-(t.minute -c.minute ))/60; t.minute =(60-k); t.hour=(t.hour-1-h); if(t.hour<0) { t.hour =(-t.hour ); t.hour =(t.hour %24); } } else { t.minute =(t.minute-c.minute ); } if(t.hour<c.hour ) { t.hour =(-(t.hour -c.hour ))%24; } else { t.hour=(t.hour -c.hour ); } return t; } CTime CTime::operator+(int s)//返回s秒后的时间 { CTime t; t.hour =hour; t.minute =minute ; t.second =second ; t.second =(t.second +s); if (t.second >59) //思考:if中的两条语句能否交换顺序?为什么不能?后果将是……? { t.minute+=t.second/60; //增加sec/60分钟 if (t.minute>59) { t.hour+=t.minute/60; if (t.hour>23) t.hour%=24; t.minute%=60; } t.second%=60; //秒数应该是sec%=60 } else if (t.minute>59) { t.hour+=t.minute/60; if (t.hour>23) t.hour%=24; t.minute%=60; } else if (t.hour>23) t.hour%=24; //此程序不涉及日期,如果设计类DateTime,修改将继续下去 return t; } CTime CTime::operator-(int s)//返回s秒前的时间 { CTime t; unsigned short int k,h; t.hour =hour; t.minute =minute ; t.second =second ; if(t.second <s) { k=(-(second-s) )%60; h=(-(second-s ))/60; t.second =(60-k); t.minute =(minute-h-1); if(t.minute<0) { t.minute =(-t.minute ); k=t.minute %60; h=t.minute /60; t.hour=t.hour-h-1; t.minute =(60-k); if(t.hour<0) { t.hour =(-t.hour ); t.hour =(t.hour %24); } } } else { t.second =second-s; } return t; } //一目运算符的重载 CTime CTime::operator++(int)//后置++,下一秒 { CTime temp(*this); second++; if(second>=60) { second-=60; ++minute; } return temp; } CTime CTime::operator++()//前置++,下一秒 { if(++second>=60) { second-=60; ++minute; } return *this; } CTime CTime::operator--(int)//后置--,前一秒 { CTime temp(*this); second--; if(second<0) { second=59; --minute; } return temp; } CTime CTime::operator--()//前置--,前一秒 { if(--second<0) { second=59; --minute; } return *this; } //赋值运算符的重载 CTime CTime::operator+=(CTime &c) { CTime t1,t; t1.hour =hour; t1.minute =minute ; t1.second =second ; t=t1+c; hour=t.hour ; minute=t.minute ; second=t.second ; return t; } CTime CTime::operator-=(CTime &c) { CTime t1,t; t1.hour =hour; t1.minute =minute ; t1.second =second ; t=t1-c; hour=t.hour ; minute=t.minute ; second=t.second ; return t; } CTime CTime::operator+=(int s)//返回s秒后的时间 { CTime t1,t; t1.hour =hour; t1.minute =minute ; t1.second =second ; t=t1+s; hour=t.hour ; minute=t.minute ; second=t.second ; return t; } CTime CTime::operator-=(int s)//返回s秒前的时间 { CTime t1,t; t1.hour =hour; t1.minute =minute ; t1.second =second ; t=t1-s; hour=t.hour ; minute=t.minute ; second=t.second ; return t; } void main() { CTime t1(8,20,25),t2(11,20,50),t; int n; 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; cout<<"t1+t2的时间为:"; t=t1+t2; t.display(); cout<<"t1+t2的时间为:"; t=t1-t2; t.display(); cout<<endl; cout<<"请输入您想增加的秒数:"; cin>>n; t=t1+n; cout<<"增加"<<n<<"秒后的时间为:"; t.display (); t=t1-n; cout<<"增加"<<n<<"秒前的时间为:"; t.display (); cout<<endl; cout<<"对t1后置++,结果为:"; t=t1++; t.display (); cout<<"运算结束后,t1的值为:"; t1.display (); cout<<endl; cout<<"对t1前置++,结果为:"; t=++t1; t.display (); cout<<"运算结束后,t1的值为:"; t1.display (); cout<<endl; cout<<"对t1后置--,结果为:"; t=t1--; t.display (); cout<<"运算结束后,t1的值为:"; t1.display (); cout<<endl; cout<<"对t1前置--,结果为:"; t=--t1; t.display (); cout<<"运算结束后,t1的值为:"; t1.display (); cout<<endl; cout<<"运算t1+=t2的结果为:"; t1+=t2; t1.display (); cout<<endl; cout<<"此时t1的值为:"; t1.display (); cout<<"此时t2的值为:"; t2.display (); cout<<endl; cout<<"运算t1-=t2的结果为:"; t1-=t2; t1.display (); cout<<"此时t1的值为:"; t1.display (); cout<<"此时t2的值为:"; t2.display (); cout<<endl; cout<<"请输入您想增加的秒数:"; cin>>n; t1+=n; cout<<"t1增加"<<n<<"秒后的时间为:"; t1.display (); cout<<"t2增加"<<n<<"秒前的时间为:"; t2-=n; t2.display (); cout<<endl; system("PAUSE"); }
- 第八周实验报告二
- 第八周实验报告二
- C++第八周实验报告(二)
- 第八周实验报告 任务二
- 第八周实验报告(二)
- 第八周实验报告(二)
- 第八周C++实验报告(二)
- 第八周实验报告
- 第八周实验报告
- 第八周实验报告
- 第八周实验报告
- C++程序设计实验报告(五十四)---第八周任务二
- 第八周实验报告 任务二(改)
- C++ 第八周实验报告
- 第八周实验报告1
- 第八周实验报告1
- 第八周实验报告1
- 第八周实验报告2
- xdos攻击ac实验环境
- 第8周实验报告任务一
- [C++ 学习] C++ Primer 笔记 bitset 和 位操作
- 第八周实验报告 任务四
- 第八周实验报告任务3 实现分数类中的运算符重载,在分数类中可以完成分数的加减乘除,求反,比较6种关系的运算。
- 第八周实验报告二
- 排错:打开资源出现RC2104
- 有空闲下来多读点书
- 第八周任务1
- 第八周实验报告(1)
- SQLServer 2008 对视图或函数’XXX’的更新或插入失败,因其包含派生域或常量域解决
- 黑马程序员-网络编程
- QT打包
- Axis2访问验证(SOAP方式)