第九周项目2-Time类运算符重载
来源:互联网 发布:大秦铁路知乎 编辑:程序博客网 时间:2024/05/01 07:19
/**程序的版权和版本声明部分:*Copyright(c)2014,烟台大学计算机学院学生*All rights reserved.*文件名称:*作者:田成琳*完成日期:2014 年 4 月 22 日*版本号:v1.0*对任务及求解方法的描述部分:*输入描述:无*问题描述:Time类模板,+,-,+=,-=的重载*程序输出:- -*问题分析:*算法设计:*/#include<iostream.h>//using namespace std;class CTime{private: int hour; // 时 int minute; // 分 int second; // 秒public: CTime(int h=0,int m=0,int s=0); void setTime(int h,int m,int s); //二目的比较运算符重载 bool operator > (CTime &t); bool operator < (CTime &t); bool operator >= (CTime &t); bool operator <= (CTime &t); bool operator == (CTime &t); bool operator != (CTime &t); //二目的加减运算符的重载 //返回t规定的时、分、秒后的时间, //例t1(8,20,25),t2(11,20,50),t1+t2为:19: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秒前的时间//一目运算符CTime operator++(int);//后置++,下一秒CTime operator++();//前置++,下一秒,前置与后置返回值不一样CTime operator--(int);//后置--,前一秒CTime operator--();//前置--,前一秒//输入输出流friend istream & operator>>(istream &input,CTime &t);friend ostream & operator<<(ostream &output,CTime &t);};//下面实现所有的运算符重载代码。CTime CTime::operator++(int){CTime t=*this;if(second++>=60){second-=60;minute++;if(minute>=60){minute-=60;hour++;}}return t;}CTime CTime::operator++(){if(second++>=60){second-=60;minute++;if(minute>=60){minute-=60;hour++;}}return *this;}CTime CTime::operator--(int){CTime t=*this;if(--second<0){second+=60;--minute;if(minute<60){minute+=60;--hour;}}return t;}CTime CTime::operator--(){if(--second<0){second+=60;--minute;if(minute<0){minute+=60;--hour;}}return *this;}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;}bool CTime::operator > (CTime &t){ 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;return false;}bool CTime::operator < (CTime &t){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;return false;}bool CTime::operator == (CTime &t){if (*this<t || *this>t) return false;return true;}bool CTime::operator != (CTime &t){if (*this==t) return false;return true;}bool CTime::operator >= (CTime &t){if (*this<t) return false;return true;}bool CTime::operator <= (CTime &t){if (*this>t) return false;return true;}CTime CTime::operator+(CTime &t){int s,m,h; s=second+t.second;m=minute+t.minute;h=hour+t.hour; while(s>=60) { s-=60; m++; } while(m>=60) { m-=60; h++; } while(h>=24) h-=24; CTime t1(h,m,s);return t1;}CTime CTime::operator-(CTime &t){int s,m,h; s=second-t.second;m=minute-t.minute;h=hour-t.hour; if(s<0) { s+=60; m--; } if(m<0) { m+=60; h--; } while(h<0) h+=24; CTime t1(h,m,s);return t1;}CTime CTime::operator+(int s){ int sec,min,hou;sec=s%60;min=(s/60)%60;hou=s/3600;CTime t(hou,min,hou);return *this+t;}CTime CTime::operator-(int s){ int sec,min,hou;sec=s%60;min=(s/60)%60;hou=s/3600;CTime t(hou,min,hou);return *this-t;}CTime CTime::operator+=(CTime &t){second+=t.second;minute+=t.minute;hour+=t.hour; while(second>=60) { second-=60; minute++; } while(minute>=60) { minute-=60; hour++; } while(hour>=24) hour-=24;CTime t1(hour,minute,second);return t1;}CTime CTime::operator-=(CTime &t){second-=t.second;minute-=t.minute;hour-=t.hour; while(second<0) { second+=60; minute--; } while(minute<0) { minute++; hour--; } while(hour<0) hour+=24;CTime t1(hour,minute,second);return t1;}CTime CTime::operator+=(int s){second+=s;while(second>60){second-=60;minute++;while(minute>60){minute-=60;hour++;}}return CTime(hour,minute,second);}CTime CTime::operator-=(int s){second-=s;while(second<0){second+=60;minute--;while(minute<0){minute+=60;hour--;}}return CTime(hour,minute,second);}istream & operator>>(istream &input,CTime &t){int h,m,s;char sign;do{input>>h>>sign>>m>>sign>>s;}while(h>24||m>60||s>60||sign!=':');t.hour=h;t.minute=m;t.second=s;return input;}ostream & operator<<(ostream &output,CTime &t){output<<t.hour<<":"<<t.minute<<":"<<t.second<<endl;return output;}int main(){CTime t1,t2,t;cout<<"t1为:";cin>>t1;cout<<"t2为:";cin>>t2;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= "<<t1<<endl;cout<<"t2= "<<t2<<endl;cout<<"t=t1++"<<endl;t=t1++;cout<<"t= "<<t<<"t1= "<<t1<<endl;cout<<"t=++t1"<<endl;t=++t1;cout<<"t= "<<t<<"t1= "<<t1<<endl;cout<<"t1+t2= "<<t1+t2<<endl;cout<<"t1-t2= "<<t1-t2<<endl;cout<<"t1+2000= "<<t1+2000<<endl;cout<<"t1-5000= "<<t1-5000<<endl;return 0;}
运行结果:
心得体会:。
0 0
- 第九周项目2-Time类运算符重载
- 第九周-项目2-Time类中的运算符重载
- 第九周项目2Time类中的运算符重载
- 第九周项目2(2)-Time类中的运算符重载(续)
- 第九周 项目2-Time类中的运算符重载(续)(2)
- 第九周 项目2-Time类中的运算符重载(2)
- 第九周项目2(1)-Time类中的运算符重载(续)
- 第九周上机实践项目2-Time类中的运算符重载(续)
- 第九周上机实践项目2——Time类中的运算符重载(续)
- 第九周项目二Time类中的运算符重载(续)(2)
- 第九周项目2——Time类中的运算符重载(续)
- 第九周 项目2 Time类中的运算符重载(续)
- 第九周 【项目2-Time类中的运算符重载(续)】
- 第九周 项目2-Time类中的运算符重载(1)
- 第九周【项目2-Time类中的运算符重载(续)】
- 第九周项目2——Time类中的运算符重载(续)
- 第九周项目2:Time类中的运算符重载(续)
- 第九周项目2——TIME类中的运算重载符(续)
- SQL语句总结
- Linux/UNIX之标准IO库
- wlan和wfi的区别
- js + php 读取、播放视频流 兼容firefox,chrome,ie,mac的safari,ios的safari,ios的微信浏览器(curl读取文件流篇)
- ZooKeeper-3.4.6分布式安装指南
- 第九周项目2-Time类运算符重载
- 游戏架构 游戏架构设计(2)
- C语言位域定义及使用
- ShopApp成长记
- 平衡二叉树 代码
- MFC中全局变量的定义及使用
- 游戏架构 游戏架构设计(3)
- 【分享】The Shape COSEG Dataset
- nginx安装