第八周任务二 运算符重载 计算时间
来源:互联网 发布:有多少网络购物平台 编辑:程序博客网 时间:2024/05/30 23:02
/* (程序头部注释开始)* 程序的版权和版本声明部分* Copyright (c) 2011, 烟台大学计算机学院学生 * All rights reserved.* 文件名称: * 作 者: 姜雅明 * 完成日期: 2012 年 04 月 10 日* 版 本 号: 1.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:15CTime 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");}
减去时间比较麻烦···开始一直不成功,因为时间没有负的···只能化成秒后计算了···
到后来直接乱了·······
- 第八周任务二 运算符重载 计算时间
- 第八周任务二——关于时间函数运算符的重载
- 第八周任务一:运算符重载
- 第九周任务二 时间 输入输出运算符重载
- 第八周任务一(3) 运算符重载 复数与实数的计算
- 《第八周任务二》实现time类中的运算符重载
- Time类中运算符重载(第八周任务二)
- 第八周实验报告(任务二)【Time类中运算符的重载】
- 第八周任务二:time类中运算符的重载问题
- 第八周任务二(实现Time类中的运算符重载)
- 第八周任务二:实现Time 类中的运算符重载
- 第八周任务二之time类运算符的重载(改正篇)
- 第八周 项目一:任务二(友元函数完成运算符的重载)
- 第九周任务二(接第八周任务二--实现Complex类中的"<<"和">>"运算符的重载)
- 2014-第八周项目二-时间类的运算符重载
- 第八周任务一:运算符的重载
- 第八周任务一(1) 复数 运算符重载
- 第八周任务三 运算符重载 分数
- Java 图形用户界面 综合例子
- MySQL基本命令
- bootsect.s
- 最长子序列求和
- AndEngine学习笔记(三)
- 第八周任务二 运算符重载 计算时间
- windows phone 加速计
- sql查询语句——单表查询
- ajax====xmlHttpRequest对象的常用属性和方法
- 牛生牛的问题
- 各大IT公司2012校园招聘笔试面试整理--解题报告整理
- android canvas类
- linux常用命令
- window.onload的加载时间