第九周实验报告(二)
2012-04-16 19:12
232 查看
/* (程序头部注释开始)
* 程序的版权和版本声明部分
* Copyright (c) 2011, 烟台大学计算机学院学生
* All rights reserved.
* 文件名称:定义Time类中的《和》运算符的重载,实现输入和输出,改造原程序中对运算结果显示方式,使程序读起来更自然。
* 作 者: 苗向前
* 完成日期: 2012 年 04 月 16 日
* 版 本 号: V9.1
* 对任务及求解方法的描述部分
* 输入描述:
* 问题描述:
* 程序输出:
* 程序头部的注释结束
*/
运行结果:
上机感言:
这台电脑VS2008彻底惹恼了我、一执行就有错误、换了台电脑、没错误!!!结果登csdn验证码一直错误、、、 又换了原先的电脑,登上去了!!!!!!我感叹!
* 程序的版权和版本声明部分
* Copyright (c) 2011, 烟台大学计算机学院学生
* All rights reserved.
* 文件名称:定义Time类中的《和》运算符的重载,实现输入和输出,改造原程序中对运算结果显示方式,使程序读起来更自然。
* 作 者: 苗向前
* 完成日期: 2012 年 04 月 16 日
* 版 本 号: V9.1
* 对任务及求解方法的描述部分
* 输入描述:
* 问题描述:
* 程序输出:
* 程序头部的注释结束
*/
#include <iostream> using namespace std; class CTime { private: unsigned short int hour; // 时 unsigned short int minute; // 分 unsigned short int second; // 秒 friend bool is_time(int, int, int); 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); //比较运算符(二目)的重载 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秒前的时间 friend ostream & operator << (ostream&, CTime&); friend istream & operator >> (istream&, CTime&); }; //下面实现所有的运算符重载代码。 //为简化编程,请注意通过调用已有函数,利用好各函数之间的关系 void CTime::setTime(int h, int m, int s) { hour = h; minute = m; second = s; } ostream &operator << (ostream &output, CTime &c) { output << c.hour << ":" << c.minute << ":" << c.second << endl; return output; } bool is_time(int h, int m, int s) { if(h < 0 || h > 24 || m < 0 ||m > 60 || s < 0 || s > 60) { return false; } else { return true; } } istream &operator >> (istream &input, CTime &c) { char c1,c2; cout << "请输入时间(格式hh:mm:ss)"; while(1) { cin >> c.hour >> c1 >> c.minute >> c2 >> c.second; if(c1 != ':' || c2 != ':') { cout << "格式不正确,请重新输入"<<endl; } else if(!is_time(c.hour, c.minute, c.second)) { cout << "时间非法,请重新输入" << endl; } else { break; } } return input; } bool CTime::operator > (CTime &t) { if(hour * 3600 + minute * 60 + second > t.hour * 3600 + t.minute * 60 + t.second) { return true; } else { return false; } } bool CTime::operator >= (CTime &t) { if(hour * 3600 + minute * 60 + second >= t.hour * 3600 + t.minute * 60 + t.second) { return true; } else { return false; } } bool CTime::operator <= (CTime &t) { if(hour * 3600 + minute * 60 + second <= t.hour * 3600 + t.minute * 60 + t.second) { return true; } else { return false; } } 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 true; } else { return false; } } bool CTime::operator < (CTime &t) { if(hour * 3600 + minute * 60 + second < t.hour * 3600 + t.minute * 60 + t.second) { return true; } else { return false; } } 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 - (CTime &c) { CTime c2; int time, t1, t2; t1 = hour * 3600 + minute * 60 + second; t2 = c.hour * 3600 + c.minute * 60 + c.second; if(t1 > t2) { time = t1 -t2; } else { time = t2 - t1; } c2.hour = time / 3600; time = time % 3600; c2.minute = time / 60; time = time % 60; c2.second = time; return c2; } CTime CTime::operator + (int s) { int time = hour * 3600 + minute * 60 + second + s; hour = time / 3600; time = time % 3600; minute = time / 60; time = time % 60; second = time; return (*this); } CTime CTime::operator - (int 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); int time = hour * 3600 + minute * 60 + second + 1; hour = time / 3600; time = time % 3600; minute = time / 60; time = time % 60; second = time; return temp; } CTime CTime::operator ++ () { int time = hour * 3600 + minute * 60 + second +1; hour = time / 3600; time = time % 3600; minute = time / 60; time = time % 60; second = time; return (*this); } CTime CTime::operator -- (int) { CTime temp = (*this); (*this) = (*this) - 1; return temp; } CTime CTime::operator -- () { (*this) = (*this) - 1; return (*this); } CTime CTime::operator += (CTime &c) { (*this)= (*this) + c; return (*this); } CTime CTime::operator -= (CTime &c) { (*this) = (*this) - c; return (*this); } CTime CTime::operator += (int s) { CTime c2; c2 = (*this) + s; return c2; } CTime CTime::operator -= (int s) { CTime c2; c2 = (*this) - s; return c2; } void main() { CTime t1, t2, t; cin >> t1 >> t2; cout << "t1为:" << t1; cout << "t2为:" << t2; 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; t = t2 - t1; cout << "t2 - t1 =" << t; t = t1; t = t + 40; cout << "t1 + 40s =" << t; t = t2; t = t - 10; cout << "t2 - 10s =" << t; t = t1++; cout << "t1++ =" << t; t = --t2; cout << "--t2 =" << t; t = t1; t += t2; cout << "t1 += t2 , t1 = " << t; t = t1; t -= 5; cout << "t1 -= 5, t1 = " << t; system("pause"); }
运行结果:
上机感言:
这台电脑VS2008彻底惹恼了我、一执行就有错误、换了台电脑、没错误!!!结果登csdn验证码一直错误、、、 又换了原先的电脑,登上去了!!!!!!我感叹!
相关文章推荐
- 第九周实验报告2
- 第九周实验报告(4)
- 第九周实验报告四
- 第九周实验报告4
- 第九周C++实验报告(四)
- 第九周实验报告(任务5)
- 第一学期第九周实验报告
- 第九周实验报告3(定义分数类中<<和>>运算符重载)
- 《第九周实验报告任务1》
- 第九周实验报告 任务2 定义Complex类中的<<和>>运算符的重载,实现输入和输出,改造原程序中对运算结果显示方式,使程序读起来更自然。
- 第九周实验报告(3)
- 第九周实验报告 任务一
- 《C++第九周实验报告1-1》--------接第8周任务1,定义Complex类中的<<和>>运算符的重载,实现输入和输出
- 第九周实验报告3
- 第九周实验报告任务五
- 第九周实验报告(5)
- 《第九周实验报告任务4》
- 第九周实验报告二
- 第九周实验报告
- 第九周实验报告2(Time类中的<<和>>运算符的重载)