第十二周上机实践——项目2-Time类中的运算符重载
来源:互联网 发布:windows纯净版系统好吗 编辑:程序博客网 时间:2024/05/21 17:20
/* *Copyright (c)2016,烟台大学计算机与控制工程学院 *All rights reserved. *文件名称:main.cpp *作 者:郭永恒 *完成日期:2016年5月18日 *版 本 号:v1.0 * *问题描述:实现Time类中的运算符重载 */#include <iostream>using namespace std;class CTime{public: CTime(int h=0,int m=0,int s=0); void setTime(int h,int m,int s); friend istream &operator>>(istream &in,CTime &t); friend ostream &operator<<(ostream &out,CTime t); 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); CTime operator-(CTime &c); CTime operator+(int s); CTime operator-(int 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秒前的时间private: unsigned short int hour; unsigned short int minute; unsigned short int second;};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;}istream &operator>>(istream &is,CTime &t){ char ch1,ch2; while(1) { cout << " 请输入时间(hh:mm:ss) "; is >> t.hour >> ch1 >> t.minute >> ch2 >> t.second;/**这里些is,老贺写成了cin**/ if (ch1==':' && ch2==':') if (t.hour>-1 && t.hour<24 && t.minute>-1 && t.minute<60 && t.second>-1 && t.second<60) break; cerr<<" 时间格式不正确! 请重新输入\n"; is.clear(); is.sync(); } return is;}ostream &operator<<(ostream &os,CTime t){ os << t.hour << ':' << t.minute << ':' << t.second; return os;}bool CTime::operator<(CTime &t){ return ((hour<t.hour)||(hour==t.hour && minute<t.minute)||(hour==t.hour && minute==t.minute && second<t.second));}bool CTime::operator>(CTime &t){ return ((hour>t.hour)||(hour==t.hour && minute>t.minute)||(hour==t.hour && minute==t.minute && second>t.second));}bool CTime::operator == (CTime &t){ return ((hour==t.hour)&&(minute==t.minute)&&(second==t.second));}bool CTime::operator != (CTime &t){ return !(*this == t);}bool CTime::operator >= (CTime &t){ return !(*this<t);}bool CTime::operator <= (CTime &t){ return !(*this>t);}CTime CTime::operator + (CTime &t){ int h,m,s; s=second+t.second; m=minute+t.minute; h=hour+t.hour; if (s>59) { s-=60; m++; } if (m>59) { m-=60; h++; } while (h>23) h-=24; CTime t0(h,m,s); return t0;}//返回s秒后的时间CTime CTime::operator+(int s){ int ss=s%60; int mm=(s/60)%60; int hh=s/3600; CTime t0(hh,mm,ss); return *this+t0;}// 计算时间之差CTime CTime::operator - (CTime &t){ int h,m,s; 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 t0(h,m,s); return t0;}//返回s秒前的时间CTime CTime::operator-(int s){ int ss=s%60; int mm=(s/60)%60; int hh=s/3600; CTime t0(hh,mm,ss); return *this-t0;}//一目运算符的重载CTime CTime::operator++(int)//后置++,下一秒{ CTime t=*this; *this=*this+1; return t;}CTime &CTime::operator++()//前置++,下一秒{ *this=*this+1; return *this;}CTime CTime::operator--(int)//后置--,前一秒{ CTime t=*this; *this=*this-1; return t;}CTime &CTime::operator--()//前置--,前一秒{ *this=*this-1; return *this;}//赋值运算符的重载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)//返回s秒后的时间{ *this=*this+s; return *this;}CTime &CTime::operator-=(int s)//返回s秒前的时间{ *this=*this-s; return *this;}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类中的运算符重载
- 第十二周上机实践项目2:Time类中的运算符重载
- 第十二周上机时间项目——项目2-Time类中的运算符重载
- 第八周上机实践项目2——Time类中的运算符重载
- 第九周上机实践项目2——Time类中的运算符重载(续)
- 第十二周上机实践项目-项目2-Time类中的运算符
- 第八周上机实践项目——Time类中的运算符重载
- 第十二周上机实践——项目1-实现复数类中的运算符重载-(2)
- 第十二周上机实践项目-项目1-(2)-实现复数类中的运算符重载
- 第十二周上机实践项目 项目1-实现复数类中的运算符重载 (2)
- 第十二周上机实践项目1(2):实现复数类中的运算符重载
- 第十二周实践项目2-Time类中的运算符重载
- 第十二周项目2-Time类中的运算符重载
- 第十二周【项目2-Time类中的运算符重载】
- 第十二周项目2-Time类中的运算符重载
- 第八周上机实践项目2-Time类中的运算符重载
- 第九周上机实践项目2-Time类中的运算符重载(续)
- 自动提取HTML中的JS进行合并与压缩
- ajaxSubmit异步提交
- ios开发基础视图 - UIPickerView
- PHP api方法总结
- php错误级别
- 第十二周上机实践——项目2-Time类中的运算符重载
- eclipse中 起动tomcat时报Multiple Contexts have a path of 。。
- [repost]State of the Art JavaScript in 2016
- jquery使用类似于java的集合
- ubuntu14.04上安装Mysql-5.7.11
- oracle中if/else功能的实现的3种写法以及elseif的写法
- force-direct力引导算法
- 谷歌整合登入系统到Android应用
- 线程池