第九周 项目二:Time类中的运算符重载(续)
来源:互联网 发布:淘宝详情图片格式要求 编辑:程序博客网 时间:2024/05/17 04:37
问题及代码:
/** Copyright (c) 2015, 烟台大学计算机学院* All rights reserved.* 文件名称:Project2.cpp* 作 者:李楠* 完成日期:2015年4月29日* 版 本 号:v1.0** 问题描述: (1)定义对时间对象的自增和自减一目运算符 (2)定义Time类中的<<和>>运算符重载,实现时间的输入输出,改造原程序中对运算结果显示方式,使程序读起来更自然。* 输入描述:* 程序输出:*/#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); //二目的比较运算符重载 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秒前的时间 //一目运算符的重(1)倀载 CTime operator++(int);//后置++,下一秒 CTime operator++();//前置++,下一秒,前置与后置返回值不一样 CTime operator--( int);//后置--,前一秒 CTime operator--();//前置--,前一秒 friend ostream&operator<<(ostream&,CTime&); friend istream&operator>>(istream&,CTime&);};ostream&operator<<(ostream&output,CTime&c){ output<<c.hour<<':'<<c.minute<<':'<<c.second<<endl; return output;}istream&operator>>(istream&input,CTime&c){ char i,j; do { cout<<"输入t3:"; input>>c.hour>>i>>c.minute>>j>>c.second; } while(i!=':'||j!=':'||c.hour>24||c.hour<0||c.minute>60||c.minute<0||c.second>60||c.second<0); return input;}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+=60; --minute; } return temp;}CTime CTime::operator--(){ if(--second<0) { second+=60; --minute; } return *this;}CTime::CTime(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) { if(minute>t.minute) return true; if(minute==t.minute) { if(second>t.second) return true; } } else return false;}bool CTime::operator(1)定义对时闀 < (CTime &t){ if(hour<t.hour) return true; if(hour==t.hour) { if(minute<t.minute) return true; if(minute==t.minute) { if(second<t.second) return true; } } else return false;}bool CTime::operator >= (CTime &t){ return !(*this<t);}bool CTime::operator <= (CTime &t){ return !(*this>t);}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 &t){ CTime tt; tt.hour=hour+t.hour; tt.minute=minute+t.minute; tt.second=second+t.second; if(tt.second>59) { tt.second-=60; tt.minute++; } if(tt.minute>59) { tt.minute-=60; tt.hour++; } if(tt.hour>23) tt.hour-=24; return tt;}CTime CTime::operator-(CTime &t){ CTime tt; tt.hour=hour-t.hour; tt.minute=minute-t.minute; tt.second=second-t.second; if(tt.second<0) { tt.second+=60; tt.minute--; } if(tt.minute<0) { tt.minute+=60; tt.hour--; } if(tt.hour<0) tt.hour+=24; return tt;}CTime CTime::operator+(int s){ CTime tt; tt.second=second+s; if(tt.second>59) { tt.minute=minute+tt.second/60; tt.second=tt.second%60; } if(tt.minute>59) { tt.hour=hour+tt.hour/60; tt.minute=tt.minute%60; } if(tt.hour>23) tt.hour=0; return tt;}CTime CTime::operator-(int s)//聪明的做法!!{ CTime tt;(1)定义对时间对象的自增和自减一目运算符 tt.second=s%60;; tt.minute=(s/60)%60; tt.hour=s/3600; return *this-tt;}CTime CTime::operator+=(CTime &c){ *this=*this+c; return *this;}CTime CTime::operator-=(CTime &c){ *this=*this-c; return *this;}CTime CTime::operator+=(int s){ *this=*this+s; return *this;}CTime CTime::operator-=(int s){ *this=*this-s; return *this;}void CTime::setTime(int h,int m,int s){ hour=h; minute=m; second=s;}int main(){ CTime t1(12,54,59),t2(15,54,43),t,t3; cin>>t3; cout<<"t3: "<<t3; cout<<"t1:"; cout<<t1; cout<<"t2:"; cout<<t2; t=t1+t2; cout<<"t1+t2="; cout<<t; t=t1-t2; t=t1+150; t=t2-280; t1+=t2; t2-=t1; t1+=340; t2-=360; 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; return 0;}
运行结果:
知识点总结:
要写清楚格式不符合时循环输入!
学习心得:
Time类进一步完善中…
0 0
- 第九周项目二Time类中的运算符重载(续)(1)
- 第九周项目二Time类中的运算符重载(续)(2)
- 2015年第九周项目二:Time类中的运算符重载(续)(1)
- 第九周 项目二:Time类中的运算符重载(续)
- 第九周 项目二-Time类中的运算符重载(续)
- 15第九周项目二——Time类中的运算符的重载(续)
- 第九周项目二--Time类中的运算符重载(续)
- 第九周 课后实践:项目二——Time类中的运算符重载(续)
- 第九周项目二——Time类中的运算符重载(续)
- 第九周项目二:Time类中的运算符重载(续)
- 第九周 项目二 Time类中的运算符重载(续)
- 第九周项目二 Time类中的运算符重载(续)
- 第九周项目二-Time类中的运算符重载(续)
- 第九周 项目二 Time类中的运算符重载(续)
- 第九周 项目二--Time类中的运算符重载(续)
- 第九周项目二 Time类中的运算符重载(续)-(2)定义Time类的>>和<<
- 第九周项目二 Time类中的运算符重载(续)(2)定义Time类的>>和<<
- 第九周项目二:Time类中的运算符重载(续)
- [POJ1947]Rebuilding Roads解题报告
- JavaScript内置对象
- 关于Access denied for user 'root'@'localhost' (using password: YES)
- 猜数字游戏(Bull and Cows)
- 解决ScrollView和GridView冲突
- 第九周 项目二:Time类中的运算符重载(续)
- CSS相对定位实现DIV层的投影(阴影)效果
- leetcode之Number of 1 Bits
- Codeforces Round #109 (Div. 1)B 数论
- 跟鸟哥学Linux之——shell script
- 微信的两个小功能------“摇一摇搜歌”和“雷达加好友”确实打动了我
- 做一名优秀的管理者,否则你可能将沦为一名谋杀者。
- vim保存没有权限修改的文件
- Java NIO使用及原理分析(一)