第8周-任务2-实现Time类中的运算符重载
来源:互联网 发布:python multiply 矩阵 编辑:程序博客网 时间:2024/06/16 04:03
/* (程序头部注释开始)
* 程序的版权和版本声明部分
* Copyright (c) 2011, 烟台大学计算机学院学生
* All rights reserved.
* 文件名称:实现Time类中的运算符重载 ,并对运算符的重载进行测试
* 作 者: 马琳
* 完成日期: 2012 年 04 月 11日
* 版 本 号: V1.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):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 + (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秒前的时间 }; //下面实现所有的运算符重载代码。 //为简化编程,请注意通过调用已有函数,利用好各函数之间的关系 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(minute > t.minute) { return true; } else if(second > t.second) { return true; } else { return false; } } bool CTime::operator < (CTime &t) { if(hour < t.hour) { return true; } else if(minute < t.minute) { return true; } else if(second < t.second) { return true; } else { return false; } } bool CTime::operator >= (CTime &t) { if((*this) > t || (*this) == t) { return true; } else { return false; } } bool CTime::operator <= (CTime &t) { if((*this) < t || (*this) == t) { return true; } else { return false; } } bool CTime::operator == (CTime &t) { if(hour == t.hour && minute == t.minute && second == t.second) { return true; } else { return false; } } bool CTime::operator != (CTime &t) { if(hour != t.hour || minute != t.minute || second != t.second) { return true; } else { return false; } } CTime CTime::operator + (CTime &c) { CTime t(*this); t.second+= c.second; if (t.second >= 60) { t.minute+= t.second/60; t.second%= 60; } t.minute+= c.minute; if (t.minute>=60) { t.hour+= t.minute/60; t.minute%= 60; } t.hour+= c.hour; if (t.hour>23) { t.hour%=24; } return t; } CTime CTime::operator - (CTime &c) { CTime t(*this); if (t.second < c.second) { t.second+= 60; t.second-= c.second; t.minute-= 1; } else { t.second-= c.second; } if (t.minute < c.minute) { t.minute+= 60; t.minute-= c.minute; t.hour-= 1; } else { t.minute-= c.minute; } if (t.hour < c.hour) { t.hour+=24; t.hour-= c.hour; } else { t.hour-= c.hour; } return t; } CTime CTime::operator + (int s) { CTime t(*this); t.second+= s; if(t.second >= 60) { t.minute = second / 60 + minute; t.second = second % 60; if(t.minute >= 60) { t.hour = hour + minute / 60; t.minute = minute % 60; if(t.hour >= 24) { t.hour%= 24; } } } return t; } CTime CTime::operator - (int s) { CTime t(*this); int x; x = t.hour * 3600 + t.minute * 60 + t.second; x = x - s; t.hour = x / 3600; x = x % 3600; t.minute = x / 60; t.second = x % 60; return t; } CTime CTime::operator ++ (int)//后置++,下一秒 { CTime t(*this); int x; x = hour * 3600 + minute * 60 + second; x = x + 1; hour = x / 3600; x = x % 3600; minute = x / 60; second = x % 60; return t; } CTime CTime::operator ++ ()//前置++,下一秒 { CTime t(*this); int x; x = hour * 3600 + minute * 60 + second; x = x + 1; hour = x / 3600; x = x % 3600; minute = x / 60; second = x % 60; return (*this); } CTime CTime::operator -- (int)//后置--,前一秒 { CTime t(*this); int x; x = hour * 3600 + minute * 60 + second; x = x - 1; hour = x / 3600; x = x % 3600; minute = x / 60; second = x % 60; return t; } CTime CTime::operator -- ()//前置--,前一秒 { CTime t(*this); int x; x = hour * 3600 + minute * 60 + second; x = x - 1; hour = x / 3600; x = x % 3600; minute = x / 60; second = x % 60; return (*this); } CTime CTime::operator+= (CTime &c) { second+= c.second; if (second >= 60) { minute+= second/60; second%= 60; } minute+= c.minute; if (minute>=60) { hour+= minute/60; minute%= 60; } hour+= c.hour; if (hour>23) { hour%=24; } return (*this); } CTime CTime::operator-= (CTime &c) { if (second < c.second) { second+= 60; second-= c.second; minute-= 1; } else { second-= c.second; } if (minute < c.minute) { minute+= 60; minute-= c.minute; hour-= 1; } else { minute-= c.minute; } if (hour < c.hour) { hour+=24; hour-= c.hour; } else { hour-= c.hour; } return (*this); } CTime CTime::operator+= (int s)//返回s秒后的时间 { second+= s; if(second >= 60) { minute = second / 60 + minute; second = second % 60; if(minute >= 60) { hour = hour + minute / 60; minute = minute % 60; if(hour >= 24) { hour%= 24; } } } return (*this); } CTime CTime::operator-= (int s)//返回s秒前的时间 { int x; x = hour * 3600 + minute * 60 + second; x = x - s; hour = x / 3600; x = x % 3600; minute = x / 60; second = x % 60; 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; 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 = t2; --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"); }
- 第8周-任务2-实现Time类中的运算符重载
- 第8周-任务2-实现Time类中的运算符重载
- 第8周上机任务,time类中的运算符重载
- C++第8周(春)项目2 实现Time类中的运算符重载
- C++第8周(春)项目2 实现Time类中的运算符重载 .
- 第八周实验任务2--实现Time类中的运算符重载 --并对运算符的重载进行测试
- 《C++第九周实验报告2-1》---接第8周任务2,定义Time类中的<<和>>运算符重载,实现时间的输入输出
- 第八周【任务2】实现Time类中的运算符重载
- 第八周实验报告任务2 实现Time类中的运算符重载
- 第八周任务2:实现Time类中的运算符重载
- c++第八周【任务2】实现Time类中的运算符重载
- 8-2 实现Time类中的运算符重载
- 8-2 实现Time类中的运算符重载
- 《第八周任务二》实现time类中的运算符重载
- 第八周任务二(实现Time类中的运算符重载)
- 第八周任务二:实现Time 类中的运算符重载
- 九周任务二:定义Time类中的<<和>>运算符重载,实现时间的输入输出
- 第九周 任务2 定义TIME类中的《和》运算重载,实现分数的输入输出。
- 队列基本操作的实现
- loadrunner——常见函数
- 编程之美——小飞的电梯调度算法
- 第八周任务三
- Linux中的log介绍(四)--klogd与syslogd的交互
- 第8周-任务2-实现Time类中的运算符重载
- JS 右键创建菜单
- 关键字Ref和Out本质区别实例分析
- java传统集合的一些弊病以及解决办法
- tutorial 4
- tutorial 5
- LR的参数和变量
- hdoj1240
- 到目前为止