第8周实验报告2
来源:互联网 发布:青岛java培训 编辑:程序博客网 时间:2024/05/16 15:05
/* (程序头部注释开始)* 程序的版权和版本声明部分* Copyright (c) 2011, 烟台大学计算机学院学生 * All rights reserved.* 文件名称:实现Time类中的运算符重载 ,并对运算符的重载进行测试 * 作 者: 朱亚楠 * 完成日期: 2012 年 04 月 09 日* 版 本 号: * 对任务及求解方法的描述部分* 输入描述: * 问题描述: * 程序输出: * 程序头部的注释结束*/<p>#include <iostream> using namespace std; </p><p>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; } </p><p>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; } </p><p>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"); } </p>
上机经验:
真是要多请教同学啊,这代码我只能说、真长…… 不过还是被我拿下了,不过还有不很明白的,多看看书,问同学吧。
- 第8周实验报告1-2
- 第8周实验报告2
- 第8周实验报告2
- 第8周实验报告2
- 第8周实验报告
- 第8周实验报告1-1
- 第8周实验报告1
- 第8周实验报告1
- 第8周实验报告任务一
- 第8周实验报告1-3
- 第8周实验报告任务二
- 第8周实验报告任务三
- 第8周实验报告1
- 第8周实验报告3
- 第8周实验报告3
- 第8周实验报告3
- 第8周实验报告4
- 第2周实验报告2
- 一封台积电离职工程师的信
- 免费应用程序的秘密“吸金术” 麻省理工《科技创业》原创文章
- 《第八周实验三》实现分数类中的运算符重载。
- 第八周上机任务1-2
- 第八周作业1
- 第8周实验报告2
- c/c++中时间函数和随机函数的总结
- 我开博客了
- 8-3
- POJ-1183反正切函数的应用 解题报告(数论) 反正切函数,一个同余问题
- POJ 2528 Mayor's posters (线段树+离散化)
- java中内存分配策略及堆和栈的比较
- 第八周 任务三
- 第八周作业任务一方案二