第二学期第八周项目2--实现Time类中的运算符重载
2014-04-22 19:27
323 查看
/* * Copyright (c) 2013, 烟台大学计算机学院 * All rights reserved. * 作 者: 沈远宏 * 完成日期:2013 年 04月15日 * 版 本 号: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); 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秒前的时间 }; void CTime::setTime(int h,int m,int s) { hour=h; minute=m; second=s; } void CTime::display() { cout<<hour<<":"<<minute<<":"<<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; 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; 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秒后的时间 { second=(s+second)%60; minute=((s+second)/60+minute)%60; hour= (((s+second)/60+minute)/60+hour)%24; return *this; } CTime CTime::operator-(int s)//返回s秒前的时间 { int s1; s1=second+minute*60+hour*3600; s1=s1-s; if(s1<0) { s1=s1%3600; second=-s1; minute=0; hour=0; } return *this; } CTime CTime::operator+=(CTime &c) { return(*this+c); } CTime CTime::operator-=(CTime &c) { return(*this+c); } CTime CTime::operator+=(int s)//返回s秒后的时间 { return (*this+s); } CTime CTime::operator-=(int s)//返回s秒前的时间 { return(*this+s); } int main() { CTime t1(8,20,25),t2(11,20,50),t3; cout<<"t1+t2="; t3=t1+t2; t3.display(); cout<<"t1-t2="; t3=t1-t2; t3.display(); }
运行结果:
心得体会:
我的加法算法很让人头晕,我也摸不清楚当时是怎么寻思的,可能只是想节省代码行,但是发现效率并不高。
没有发博文不代表这个作业没有做。
相关文章推荐
- List 去掉对象元素
- C语言程序前后自增(++a、a++)在Linux下的实现机制
- 高可用集群深入
- Oracle数据库案例整理-Oracle系统运行时故障-目录/var/tmp/.oracle不存在导致监听数据库失败
- ubuntu samba server 配置多用户访问
- android 进程监控 top
- POJ 2524 Ubiquitous Religions
- Oracle数据库案例整理-Oracle系统运行时故障-tnsnames.ora文件配置错误导致数据库TNSping失败
- 商城放大镜效果
- Oracle数据库案例整理-Oracle系统运行时故障-alert.log日志文件大小超出限制
- Red Hat Linux中用户和组
- java的自动装箱与拆箱以及缓存的问题
- Oracle数据库案例整理-Oracle系统运行时故障-$ORACLE_HOME/bin下的文件权限错误导致TNS连接失败
- backgroundColor和background-color的区别
- 数据挖掘——之分类和预测总结
- Oracle数据库案例整理-Oracle系统运行时故障-stage目录权限错误导致创建pfile文件失败
- 要把photoshop当一门编程语言来学习
- (2)CSS指定长度的三种方式
- vnc连接后无法启动图形
- Oracle数据库案例整理-Oracle系统运行时故障-Shared Pool内存不足导致数据库响应缓慢