第九周——项目二
来源:互联网 发布:怎样开淘宝网店知乎 编辑:程序博客网 时间:2024/05/17 02:04
/**Copyright (c) 2013, 烟台大学计算机学院* All rights reserved.* 作 者:申玉迪* 完成日期:2014 年 4 月 27 日* 版 本 号:v1.0* 问题描述:实现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) { hour=h; minute=m; second=s; } void setTime(int h,int m,int s) { hour=h; minute=m; second=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); //二目的加减运算符的重载 //返回t规定的时、分、秒后的时间,例t1(8,20,25),t2(11,20,50),t1+t2为: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&,CTime&); friend ostream&operator<<(ostream&,CTime&);};CTime CTime::operator+(CTime &t){ CTime p; p.hour=hour+t.hour; p.minute=minute+t.minute; p.second=second+t.second; if(p.second>=60) { p.minute++; p.second-=60; } if(p.minute>=60) { p.hour++; p.minute-=60; } if(p.hour>=24) { p.hour-=24; } return p;}CTime CTime::operator-(CTime &t){ CTime p; 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--; } if(h<0) { h+=24; } p.hour=h; p.minute=m; p.second=s; return p;}CTime CTime::operator+(int s){ second=second+s; while(second>=60) { second=second-60; minute++; if(minute>=60) { hour++; minute=minute-60; } if(hour>=24) { hour=hour-24; } } return CTime(hour,minute,second);}CTime CTime::operator-(int s){ /*second=second-s;//因为前面定义的是unsigned short int,所以second就不会出现负数,即此方法不可用 while(second<0) { second+=60; minute--; if(minute<0) { hour--; minute+=60; } if(hour<0) { hour+=24; } } return CTime(hour,minute,second);*/ int s1,m1,h1; s1=s%60; m1=(s/60)%60; h1=s/3600; CTime t3(h1,m1,s1); return *this-t3;}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;}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) // 判断时间t1<=t2{ 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(hour==t.hour&&minute==t.minute&&second==t.second) return true; return false;}bool CTime::operator!=(CTime &t){ if(*this==t)return false; return true;}CTime CTime::operator++(int s){ second+=s; if(second>=60) { minute++; second-=60; } if(minute>=60) { hour++; minute-=60; } if(hour>=24) { hour-=24; } return CTime(hour,minute,second);}CTime CTime::operator++(){ ++second; if(second>=60) { minute++; second-=60; } if(minute>=60) { hour++; minute-=60; } if(hour>=24) { hour-=24; } return CTime(hour,minute,second);}CTime CTime::operator--(int s){ int s1,m1,h1; s1=s%60; m1=(s/60)%60; h1=s/3600; CTime t3(h1,m1,s1); return *this-t3;}CTime CTime::operator--(){ int s1,m1,h1; s1=second; m1=minute; h1=hour; --s1; if(s1<0) { s1+=60; m1--; } if(m1<0) { m1+=60; h1--; } if(h1<0) { h1+=24; } return CTime(s1,m1,h1);}istream& operator>>(istream&input,CTime& t){ char a; input>>t.hour>>a>>t.minute>>a>>t.second; while(1) { if(a!=':'||(t.hour>=24||t.hour<0)||(t.minute>=60||t.minute<0)||(t.second>=60||t.second<0)) { cout<<"格式有误,请重新输入。"; input>>t.hour>>a>>t.minute>>a>>t.second; } else break; } 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和t2:"; cin>>t1>>t2; cout<<"t1为:"<<t1; cout<<"t2为:"<<t2; if(t1>t2) cout<<"t1>t2"<<endl; if(t1<t2) cout<<"t1<t2"<<endl; if(t1==t2) cout<<"t1=t2"<<endl; cout<<"t1+t2="; t=t1+t2; cout<<t; cout<<"t2-t1="; t=t2-t1; cout<<t; t=t1+300; cout<<"t1+300s="; cout<<t; t=t2-600; cout<<"t2-600s="; cout<<t; cout<<"t1自加500s后:"; t1+=500; cout<<t1; cout<<"t2自减900s后:"; t2-=900; cout<<t2; return 0;}
0 0
- 第九周——项目二
- 第九周项目二
- 第九周项目二
- 第九周项目二
- 第九周项目二
- 第九周项目二
- 第九周项目二
- 第九周 项目二
- 第九周项目二
- 第九周项目二
- 第九周项目二
- 第九周项目二
- 第九周任务——项目二(Time类)
- 第九周项目二——分数的累加
- 第九周项目二——分数的累加
- 第九周项目二——分数的累加
- 第九周项目二——分数的累加
- 第九周项目二——分数的累加
- JavaScript Switch 语句的详解
- dom4j读写xml文件
- Quartz 框架 教程(中文版)2.2.x 之第十一课:高级(企业级)特性
- 样式优先级
- “惊群”问题
- 第九周——项目二
- exit(0)添加动画
- C++中属于整个类的的常量
- 选项卡组件和ListView组件结合模拟新浪微博
- buffer object 的使用
- cloudstack 15.6. Using Multiple Guest Networks
- UVa:748 - Exponentiation
- 如何提高团队管理能力5
- 【IOS】xcode调试命令收集