第8周任务2
来源:互联网 发布:手机破解公司网络限制 编辑:程序博客网 时间:2024/05/01 01:42
实验目的
实验内容
源程序
/*
*程序的版权和版本声明部分
* Copyright (c) 2011,烟台大学计算机学院学生
* All rights reserved.
*作 者: 计114-3 付文杰
*完成日期: 2012 年 4 月 10 日
*版本号:
*对任务及求解方法的描述部分
*输入描述:
*问题描述:
*程序输出:
*问题分析:
*算法设计:
*/
//【任务2】实现Time类中的运算符重载#include <iostream>#include<iomanip>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){hour = h;minute = m;second = s;}void display();/*void add_seconds(int); //增加n秒钟void add_minutes(int); //增加n分钟 void add_hours(int); //增加n小时 *///比较运算符(二目)的重载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:15CTime 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秒前的时间};//下面实现所有的运算符重载代码。//为简化编程,请注意通过调用已有函数,利用好各函数之间的关系void CTime :: display(){cout << setw(2) << setfill('0') << hour << ":" << setw(2) << setfill('0') << minute << ":" << setw(2) << setfill('0') << second << endl;}bool CTime :: operator > (CTime &t){if(hour > t.hour)return true;else if(hour == t.hour){if(minute > t.minute)return true;else if(minute == t.minute){if(second > t.second)return true;else return false;}else return false;}else return false;}bool CTime :: operator < (CTime &t){if(hour < t.hour)return true;else if(hour == t.hour){if(minute < t.minute)return true;else if(minute == t.minute){if(second < t.second)return true;else return false;}else return false;}else return false;}bool CTime :: operator >= (CTime &t){if(hour < t.hour)return false;else if(hour == t.hour){if(minute < t.minute)return false;else if(minute == t.minute){if(second < t.second)return false;else return true;}else return true;}else return true;}bool CTime :: operator <= (CTime &t){if(hour > t.hour)return false;else if(hour == t.hour){if(minute > t.minute)return false;else if(minute == t.minute){if(second > t.second)return false;else return true;}else return true;}else return true;}bool CTime :: operator == (CTime &t){if(hour == t.hour && minute == t.minute && second == t.second)return true;else return false;}bool CTime :: operator != (CTime &t){if(hour == t.hour && minute == t.minute && second == t.second)return false;else return true;}CTime CTime :: operator+(CTime &c)//返回c所规定的时、分、秒后的时间,例t1(8,20,25),t2(11,20,50),t1+t2为:41:15{CTime c1;c1.second = second + c.second;if(c1.second >= 60){c1.second = c1.second - 60;c1.minute = minute + 1;if(c1.minute >= 60){c1.minute = c1.minute - 60;c1.hour = hour + 1;if(c1.hour >= 24)c1.hour = c1.hour - 24;}}c1.minute = minute + c.minute;if(c1.minute >= 60){c1.minute = c1.minute - 60; c1.hour = c1.hour + 1;if(c1.hour >= 24)c1.hour = c1.hour - 24;}c1.hour = hour + c.hour; if(c1.hour >= 24)c1.hour = c1.hour - 24;return c1;}CTime CTime :: operator-(CTime &c)//对照+理解{CTime c1, c2;c1.second = hour * 3600 + minute * 60 + second;c2.second = c.hour * 3600 + c.minute * 60 + c.second;if(c1.second > c2.second){c1.second = c1.second - c2.second;}else c1.second = c2.second - c1.second;c1.hour = c1.second / 3600;c1.minute = (c1.second % 3600) / 60;c1.second = (c1.second % 3600) % 60;return c1;}CTime CTime :: operator+(int s)//返回s秒后的时间{ CTime c1;c1.second = second + s; if (c1.second > 59) { c1.minute = minute + c1.second / 60; c1.second %= 60; }else c1.minute = minute;if (c1.minute > 59){c1.hour = c1.hour + (c1.minute / 60); c1.minute %= 60;}else c1.hour = hour; if (c1.hour > 23) c1.hour %= 24; return c1;} CTime CTime :: operator-(int s)//返回s秒前的时间{ CTime c1;c1.second = hour * 3600 + minute * 60 + second;c1.second = c1.second - s;c1.hour = c1.second / 3600;c1.minute = (c1.second % 3600) / 60;c1.second = (c1.second % 3600) % 60;return c1;} //一目运算符的重载CTime CTime::operator++(int)//后置++,下一秒{ CTime temp(*this); second++; if(second >= 60) { second -= 60; ++minute; if(minute >= 60) {minute -= 60; ++hour; if(hour >= 24)hour -= hour; } }return temp;}CTime CTime :: operator++()//前置++,下一秒{ CTime temp(*this); second++; if(second >= 60) { second -= 60; ++minute; if(minute >= 60) {minute -= 60; ++hour; if(hour >= 24)hour -= hour; } }return *this;}CTime CTime :: operator--(int)//后置--,前一秒{CTime temp(*this);second = hour * 3600 + minute * 60 + second;second -= 1 ;hour = second / 3600;minute = (second % 3600) / 60;second = (second % 3600) % 60;return temp;}CTime CTime :: operator--()//前置--,前一秒{CTime temp(*this);second = hour * 3600 + minute * 60 + second;second -= 1 ;hour = second / 3600;minute = (second % 3600) / 60;second = (second % 3600) % 60;return *this;}//赋值运算符的重载 CTime CTime :: operator+=(CTime &c){CTime c1;c1.second = second + c.second;if(c1.second >= 60){c1.second = c1.second - 60;c1.minute = minute + 1;if(c1.minute >= 60){c1.minute = c1.minute - 60;c1.hour = hour + 1;if(c1.hour >= 24)c1.hour = c1.hour - 24;}}c1.minute = minute + c.minute;if(c1.minute >= 60){c1.minute = c1.minute - 60; c1.hour = c1.hour + 1;if(c1.hour >= 24)c1.hour = c1.hour - 24;}c1.hour = hour + c.hour; if(c1.hour >= 24)c1.hour = c1.hour - 24;return c1;}CTime CTime :: operator-=(CTime &c){CTime c1, c2;c1.second = hour * 3600 + minute * 60 + second;c2.second = c.hour * 3600 + c.minute * 60 + c.second;if(c1.second > c2.second){c1.second = c1.second - c2.second;}else c1.second = c2.second - c1.second;c1.hour = c1.second / 3600;c1.minute = (c1.second % 3600) / 60;c1.second = (c1.second % 3600) % 60;return c1;}CTime CTime :: operator+=(int s)//返回s秒后的时间{ CTime c1;c1.second = second + s; if (c1.second > 59) { c1.minute = minute + c1.second / 60; c1.second %= 60; }else c1.minute = minute;if (c1.minute > 59){c1.hour = c1.hour + (c1.minute / 60); c1.minute %= 60;}else c1.hour = hour; if (c1.hour > 23) c1.hour %= 24; return c1;} CTime CTime :: operator-=(int s)//返回s秒前的时间{ CTime c1;c1.second = hour * 3600 + minute * 60 + second;c1.second = c1.second - s;c1.hour = c1.second / 3600;c1.minute = (c1.second % 3600) / 60;c1.second = (c1.second % 3600) % 60;return c1;} void main(){CTime t1(8,20,25),t2(11,20,50),t;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;//下面自行设计对其他运算符的重载的测试 t = t1 + t2;cout << "t1 + t2 = ";t.display();t = t1 - t2;cout << "t1 和 t2的时间差是: ";t.display();t = t1 + 50;cout << "t1 + 50 = ";t.display();t = t1 - 50;cout << "t1 - 50 = ";t.display();t = t1++;cout << "t1++ = ";t.display();t = ++t1;cout << "++t1 = ";t.display(); t = t1--;cout << "t1-- = ";t.display();t = --t1;cout << "--t1 = ";t.display();t = (t1 += t2);cout << "经过t1 += t2运算后为:";t.display();t = (t1 -= t2);cout << "经过t1 -= t2运算后为:";t.display();t = (t1 += 60);cout << "经过t1 += 60运算后为:";t.display();t = (t1 -= 60);cout << "经过t1 -= 60运算后为:";t.display(); system("pause");}
运行结果:
- 第8周任务2
- 第8周任务2
- 第8周任务
- 第8周项目1:任务2
- 第8周任务1
- 第8周任务4
- 第2周上机任务
- 第2周上机任务
- 第2周上机任务
- 第2周上机任务
- 第2周上机任务
- 第6周任务2
- 第6周任务2
- 第7周任务2
- 第9周任务2
- 第9周任务2
- 第9周任务2
- 第10周任务2
- 一些iOS高效开源类库
- Linux系统中的进程的启动方式
- VB.Net程序打包成可执行的.exe程序
- 分享5个最佳的Javascript日期处理类库
- 分享30个带给你灵感的书法作品
- 第8周任务2
- Q-quote表达式
- OpenCV学习之数据类型
- C常见问题之static
- css中后代元素和子元素的区别
- 排毒食谱,饮食与美容的关系
- 分享一个快速开发动态互动HTML5可视化图形效果的Javascript类库 - Envision.js
- OpenCV学习笔记(四十八)——PCA算法实现core
- Service 的生命周期