第二学期第九周项目2--TIME类
来源:互联网 发布:利润表中的数据 编辑:程序博客网 时间:2024/05/29 14:52
/* * Copyright (c) 2013, 烟台大学计算机学院 * All rights reserved. * 作 者: 沈远宏 * 完成日期:2013 年 04月15日 * 版 本 号:v1.0 * 问题描述:实现Time类中的运算符重载 (1)定义对时间对象的自增和自减一目运算符 (2)定义Time类中的<<和>>运算符重载,实现时间的输入输出,改造原程序中对运算结果显示方式,使程序读起来更自然。*/#include <iostream>using namespace std;class CTime{private: unsigned short int hour; // 时 unsigned short int minute; // 分 unsigned short int second; // 秒 char p,t;public: CTime(int h=0,int m=0,int s=0):hour(h),minute(m),second(s) {}; //输入输出流的运算符的重载 friend ostream& operator << (ostream&,CTime&); friend istream& operator >>(istream&,CTime&); void input(); 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++(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::input(){ cin>>hour>>p>>minute>>t>>second;}void CTime::display(){ cout<<hour<<p<<minute<<t<<second<<endl;}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 false; if(hour<t.hour) return true; if(minute>t.minute) return false; if(minute<t.minute) return true; if(second>t.second) return false; return true;}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||*this>t)return true; return false;}CTime CTime::operator+(CTime &t){ CTime t3(*this); int k,j,i; k=(second+t.second)/60; t3.second=(second+t.second)%60; j=(minute+t.minute+k)/60; t3.minute=(minute+t.minute+k)%60; i=(hour+t.hour+j)/24; t3.hour=(hour+t.hour+j)%24; return t3;}CTime CTime::operator-(CTime &t){ CTime t3(*this); int k,j,i; k=hour*3600+minute*60+second; j=t.hour*3600+t.minute*60+t.second; i=k-j; t3.second=(-i)%3600; t3.minute=(-i)/60%60; t3.hour=(-i)/3600; return t3;}CTime CTime::operator+(int s)//返回s秒后的时间{ CTime t3(*this); t3.second=(s+second)%60; t3.minute=((s+second)/60+minute)%60; t3.hour= (((s+second)/60+minute)/60+hour)%24; return t3;}CTime CTime::operator-(int s)//返回s秒前的时间{ CTime t3(*this); int s1; s1=second+minute*60+hour*3600; s1=s1-s; if(s1<0) { s1=s1%3600; t3.second=-s1; if(t3.second<60) { t3.minute=0; t3.hour=0; } else { t3.second=t3.second%60; t3.minute=t3.second/60; t3.hour=t3.minute/60; if(t3.hour>24) { t3.hour=t3.hour/24; } } } return t3;}CTime CTime::operator+=(CTime &c){ CTime t3(*this); return(t3+c);}CTime CTime::operator-=(CTime &c){ CTime t3(*this); return(t3-c);}CTime CTime::operator+=(int s)//返回s秒后的时间{ CTime t3(*this); return(t3+s);}CTime CTime::operator-=(int s)//返回s秒前的时间{ CTime t3(*this); return(t3-s);}CTime CTime::operator++(){ CTime t3(*this); t3.second++; if(t3.second==60) { t3.second-=60; t3.minute++; if(t3.minute==60) { t3. minute-=60; t3. hour++; { if(t3.hour==24) { t3.hour-=24; } } } } return t3;}CTime CTime::operator++(int){ CTime t1(*this),t2(t1); t1.second++; if( t1.second==60) { t1.second-=60; t1.minute++; if( t1.minute==60) { t1. minute-=60; t1.hour++; { if( t1.hour==24) { t1. hour-=24; } } } } return t2;}CTime CTime::operator--(){ CTime t1(*this); t1.second--; if( t1.second==0) { t1.second+=60; t1.minute--; if( t1.minute==0) { t1.minute+=60; t1.hour--; { if( t1.hour==0) { t1.hour+=24; } } } } return t1;}CTime CTime::operator--(int){ CTime t1(*this),t2(t1); t1.second--; if( t1.second==0) { t1.second+=60; t1.minute--; if( t1.minute==0) { t1.minute+=60; t1.hour--; { if( t1.hour==0) { t1.hour+=24; } } } } return t2;}ostream& operator<<(ostream& output,CTime& c){ output<<c.hour<<c.t<<c.minute<<c.p<<c.second<<endl; return output;}istream& operator>>(istream& input,CTime& c){ input>>c.hour>>c.p>>c.minute>>c.t>>c.second; return input;}int main(){ CTime t1,t3; cout<<"请输入个时间(时:分:秒):\n"; cin>>t1; t3=t1++; cout<<"t1++="<<t3; t3=++t1; cout<<"++t1="<<t3; t3=t1--; cout<<"t1--="<<t3; t3=--t1; cout<<"--t1="<<t3;}//自行编制用于测试的main()函数,有些结果不必依赖display()函数,提倡用单步执行查看结果
运行结果:
心得体会:
之前有一些浮躁,现在请自己静下来,慢慢的追赶自己落下的路
0 0
- 第二学期第九周项目2--TIME类
- 第二学期第九周项目3--分数类
- 第二学期第九周项目5--一元一次方程
- 第二学期第八周项目2--实现Time类中的运算符重载
- 第二学期第九周项目1--实现复数类中的运算符重载
- 第二学期第九周项目1--实现复数类中的运算符重载
- 第九周项目2:Time类
- 第九周--项目2-Time类
- **第二学期第五周项目2--分数类的雏形
- 大一第二学期第2周【项目3:时间类】
- 第二学期第六周项目2
- 第二学期第九周项目1--实现复数类中的运算符重载(复数与浮点数)
- 第二学期第二周项目一
- 第二学期第二周项目二
- 第九周上机任务项目2-Time类
- 第九周项目2-Time类运算符重载
- 第九周-项目2-Time类中的运算符重载
- 第九周项目2Time类中的运算符重载
- 启动其他app中的activity
- VS2010破解问题(密钥)
- jni层解析java层传下来的JSONArray string 对象
- Error 1327. Invalid Drive f:\解决办法:
- 基于SpringMVC、MyBatis、FreeMarker架构实战CMS大型门户网站
- 第二学期第九周项目2--TIME类
- android BitmapFactory.Options
- java中"=="和equals方法究竟有什么区别?
- 域名解析是什么意思
- Args4J 使用指南
- 2014年将迎来黄金价格的下跌周期?
- UVA 11722 Joining with Friend
- 第二学期第九周项目3--分数类
- 一些常用的Oacle数据库操作