第八周实验报告任务2 实现Time类中的运算符重载
来源:互联网 发布:阿里云服务器内存不足 编辑:程序博客网 时间:2024/06/05 15:54
/* (程序头部注释开始)
* 程序的版权和版本声明部分
* Copyright (c) 2011, 烟台大学计算机学院学生
* All rights reserved.
* 文件名称:实现Time类中的运算符重载 ,并对运算符的重载进行测试
* 作 者: 陶锋
* 完成日期: 2012 年 04 月 09 日
* 版 本 号: V1.0
* 对任务及求解方法的描述部分
* 输入描述:
* 问题描述:
* 程序输出:
* 程序头部的注释结束
*/
#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); 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); //二目运算符的重载 CTime operator+(CTime &c); //返回c所规定的时、分、秒后的时间,例t1(8,20,25),t2(11,20,50),t1+t2为:41:15 CTime operator-(CTime &c);//对照+理解 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秒前的时间 }; 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; }
void CTime::display() { cout<<hour<<":"<<minute<<":"<<second<<endl; } //下面实现所有的运算符重载代码。 //为简化编程,请注意通过调用已有函数,利用好各函数之间的关系 //比较运算符(二目)的重载 bool CTime::operator > (CTime &t) { if(hour>t.hour) return true; else if(hour<t.hour) return false; else if(minute>t.minute ) return true; else if(minute<t.minute ) return false; else if(second>t.second ) return true; else if(second<t.second ) return false; return false; } bool CTime::operator < (CTime &t) { if(hour<t.hour) return true; else if(hour>t.hour) return false; else if(minute<t.minute ) return true; else if(minute>t.minute ) return false; else if(second<t.second ) return true; else if(second>t.second ) return false; return false; } bool CTime::operator >= (CTime &t) { CTime t1; t1.hour =hour; t1.minute =minute ; t1.second =second ; if (t1<t) return false; return true; } bool CTime::operator <= (CTime &t) { CTime t1; t1.hour =hour; t1.minute =minute ; t1.second =second ; if (t1>t) return false; return true; } bool CTime::operator == (CTime &t) { CTime t1; t1.hour =hour; t1.minute =minute ; t1.second =second ; if (t1>t) return false; if (t1<t) return false; return true; }
bool CTime::operator != (CTime &t) { CTime t1; t1.hour =hour; t1.minute =minute ; t1.second =second ; if(t1==t) return false; return true; } //二目运算符的重载 CTime CTime::operator+(CTime &c)//返回c所规定的时、分、秒后的时间,例t1(8,20,25),t2(11,20,50),t1+t2为:41:15 { CTime t; t.hour =hour+c.hour ; t.minute =minute+c.minute ; t.second =second +c.second ; if (t.second >59) //思考:if中的两条语句能否交换顺序?为什么不能?后果将是……? { t.minute=(t.minute +t.second/60); //增加sec/60分钟 if (t.minute>59) { t.hour=(t.hour+t.minute/60); if (t.hour>23) t.hour=(t.hour %24); t.minute=(t.minute %60); } t.second=(t.second %60); //秒数应该是sec%=60 } if (t.minute>59) { t.hour=(t.hour +t.minute/60); if (t.hour>23) t.hour=(t.hour %24); t.minute=(t.minute %60); } if (t.hour>23) t.hour=(t.hour %24); //此程序不涉及日期,如果设计类DateTime,修改将继续下去 return t; } CTime CTime::operator-(CTime &c)//对照+理解 { CTime c2; int time; time = (hour * 3600 + minute * 60 + second) - (c.hour * 3600 + c.minute * 60 + c.second); c2.hour = time / 3600; time = time % 3600; c2.minute = time / 60; time = time % 60; c2.second = time; return c2; } CTime CTime::operator+(int s)//返回s秒后的时间 { CTime t; t.hour =hour; t.minute =minute ; t.second =second ; t.second =(t.second +s); if (t.second >59) //思考:if中的两条语句能否交换顺序?为什么不能?后果将是……? { t.minute+=t.second/60; //增加sec/60分钟 if (t.minute>59) { t.hour+=t.minute/60; if (t.hour>23) t.hour%=24; t.minute%=60; } t.second%=60; //秒数应该是sec%=60 } else if (t.minute>59) { t.hour+=t.minute/60; if (t.hour>23) t.hour%=24; t.minute%=60; } else if (t.hour>23) t.hour%=24; //此程序不涉及日期,如果设计类DateTime,修改将继续下去 return t; } CTime CTime::operator-(int s)//返回s秒前的时间 { int time = hour * 3600 + minute * 60 + second; time = time - s; hour = time / 3600; time = time % 3600; minute = time / 60; time = time % 60; second = time; return (*this); } //一目运算符的重载 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=59; --minute; } return temp; } CTime CTime::operator--()//前置--,前一秒 { if(--second<0) { second=59; --minute; } return *this; } //赋值运算符的重载 CTime CTime::operator+=(CTime &c) { CTime t1,t; t1.hour =hour; t1.minute =minute ; t1.second =second ; t=t1+c; hour=t.hour ; minute=t.minute ; second=t.second ; return t; } CTime CTime::operator-=(CTime &c) { CTime t1,t; t1.hour =hour; t1.minute =minute ; t1.second =second ; t=t1-c; hour=t.hour ; minute=t.minute ; second=t.second ; return t; } CTime CTime::operator+=(int s)//返回s秒后的时间 { CTime t1,t; t1.hour =hour; t1.minute =minute ; t1.second =second ; t=t1+s; hour=t.hour ; minute=t.minute ; second=t.second ; return t; } CTime CTime::operator-=(int s)//返回s秒前的时间 { CTime t1,t; t1.hour =hour; t1.minute =minute ; t1.second =second ; t=t1-s; hour=t.hour ; minute=t.minute ; second=t.second ; return t; } void main() { CTime t1(8,20,25),t2(11,20,50),t; int n; cout<<"t1为:"; t1.display(); cout<<"t2为:"; t2.display(); 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+t2的时间为:"; t=t1+t2; t.display(); cout<<"t2-t1的时间为:"; t=t2-t1; t.display(); cout<<endl; cout<<"请输入您想增加的秒数:"; cin>>n; t=t1+n; cout<<"增加"<<n<<"秒后的时间为:"; t.display (); t=t1-n; cout<<"增加"<<n<<"秒前的时间为:"; t.display (); cout<<endl; cout<<"对t1后置++,结果为:"; t=t1++; t.display (); cout<<"运算结束后,t1的值为:"; t1.display (); cout<<endl; cout<<"对t1前置++,结果为:"; t=++t1; t.display (); cout<<"运算结束后,t1的值为:"; t1.display (); cout<<endl; cout<<"对t1后置--,结果为:"; t=t1--; t.display (); cout<<"运算结束后,t1的值为:"; t1.display (); cout<<endl; cout<<"对t1前置--,结果为:"; t=--t1; t.display (); cout<<"运算结束后,t1的值为:"; t1.display (); cout<<endl; cout<<"运算t1+=t2的结果为:"; t1+=t2; t1.display (); cout<<endl; cout<<"此时t1的值为:"; t1.display (); cout<<"此时t2的值为:"; t2.display (); cout<<endl; cout<<"运算t1-=t2的结果为:"; t1-=t2; t1.display (); cout<<"此时t1的值为:"; t1.display (); cout<<"此时t2的值为:"; t2.display (); cout<<endl; cout<<"请输入您想增加的秒数:"; cin>>n; t1+=n; cout<<"t1增加"<<n<<"秒后的时间为:"; t1.display (); cout<<"t2增加"<<n<<"秒前的时间为:"; t2-=n; t2.display (); cout<<endl; system("PAUSE"); }
- 第八周实验报告任务2 实现Time类中的运算符重载
- 《C++第八周实验报告2-1》---实现Time类中的运算符重载
- 第八周实验任务2--实现Time类中的运算符重载 --并对运算符的重载进行测试
- 第八周实验报告任务1 实现复数类中的运算符重载
- 第八周实验报告(任务二)【Time类中运算符的重载】
- 第八周【任务2】实现Time类中的运算符重载
- 第八周任务2:实现Time类中的运算符重载
- c++第八周【任务2】实现Time类中的运算符重载
- 第八周实验报告(二)实现Time类中的运算符重载,并对运算符的重载进行测试
- 第八周C++上机报告(项目三__实现Time类中的运算符重载)
- 《第八周任务二》实现time类中的运算符重载
- 第八周任务二(实现Time类中的运算符重载)
- 第八周任务二:实现Time 类中的运算符重载
- 《C++第九周实验报告2-1》---接第8周任务2,定义Time类中的<<和>>运算符重载,实现时间的输入输出
- 第八周实验报告任务4 实现分数类中的运算符重载,分数类中的对象可以和整数型进行四则运算,且运算符合交换律。
- 第八周实验指导任务1--实现复数类中的运算符重载
- 第八周【项目2-Time类中的运算符重载】实现Time类中的运算符重载
- 第八周上机任务项目2-Time类中的运算符重载
- 【Linux 驱动】驱动开发第一步----开发环境搭配
- 测试测试测试
- 第八周实验报告2
- 让Entity Framework支持MySql数据库
- 8-3 实现分数类中的运算符重载
- 第八周实验报告任务2 实现Time类中的运算符重载
- 如何对付MSSQL 2008 配置管理器不可用
- 《第八周任务一-3》实现复数类中的运算符的重载函数
- 第八周上级任务1
- Word2010 自动生成目录
- http中的认证
- ORACLE外连接小结 .
- 第八周实验报告1——成员函数
- 这段时间的计划