第9周实验报告2
2012-04-17 15:32
309 查看
实验目的:实现Time类中的运算符重载
* 程序头部注释开始
* 程序的版权和版本声明部分
* 烟台大学计算机学院学生
* 文件名称: 运算符重载
* 作 者: 胡斌
* 完成日期: 2012 年 4月17日
* 版本号: v1.0
* 程序头部的注释结束(此处也删除了斜杠)
截图:
* 程序头部注释开始
* 程序的版权和版本声明部分
* 烟台大学计算机学院学生
* 文件名称: 运算符重载
* 作 者: 胡斌
* 完成日期: 2012 年 4月17日
* 版本号: 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); //比较运算符(二目)的重载 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&); }; ostream& operator << (ostream& output, CTime& t) { cout << t.hour << ":" << t.minute << ":" << t.second << endl; return output; } istream& operator >> (istream& input, CTime& t) { cout << "请输入要置时间的时、分、秒:"; input >> t.hour >> t.minute >> t.second; return input; } void main() { CTime t1, t2, t, t3; cin >> t1 >> t2; cout << "t1为: " << t1; cout << "t2为: " << t2; cout << "\n下面比较两个时间大小:\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; t3 = t2 - t1; cout << "t2 - t1 = " << t3; int n; cout << endl; cout << t; cout <<"请输入您想在原有时间之上增加的秒数:"; cin >> n; t = t + n; cout << t; int m; cout << "请输入您想在当前时间之上减少的秒数:"; cin >> m; t = t - m; cout << t; cout << endl; t = t ++; cout << "t++ = " << t; t = ++ t; cout << "++t =" << t; cout << endl; t = t --; cout << "t-- = " << t; t = -- t; cout << "--t = " << t; cout << endl; t = t1 += t2; cout << "t1 += t2 = " << t; t = t2 -= t1; cout << "t2 -= t1 = " << t; int s; cout << endl; cout << t; cout << "请输入您想在当前时间之上增加的秒数: "; cin >> s; t = t += s; cout << t; int s1; cout << "请输入您想在当前时间之上减少的秒数: "; cin >> s1; t = t -= s1; cout << t; system("pause"); } CTime::CTime(int h, int m, int s) { hour = h; minute = m; second = s; } 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 && 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; } CTime CTime::operator + (CTime &c) { CTime c1; c1.hour = hour + c.hour; c1.minute = minute + c.minute; c1.second = second + c.second; if(c1.second >= 60) { c1.second = c1.second - 60; c1.minute ++; if(c1.minute >= 60) { c1.minute = c1.minute - 60; c1.hour ++; if(c1.hour >= 24) { c1.hour = c1.hour - 24; } } } if(c1.minute >= 60) { c1.minute = c1.minute - 60; c1.hour ++; if(c1.hour >= 24) { c1.hour = c1.hour - 24; } } if(c1.hour >= 24) { c1.hour = c1.hour - 24; } return c1; } CTime CTime::operator - (CTime &c) { CTime c1; int sec, sec1, sec2; sec1 = second + minute * 60 + hour * 3600; sec2 = c.second + c.minute * 60 + c.hour * 3600; sec = sec1 - sec2; c1.hour = sec / 3600; sec = sec % 3600; c1.minute = sec / 60; c1.second = sec % 60; return c1; } CTime CTime::operator + (int s) { CTime c; c.second = second + s; if(c.second >= 60) { c.minute = minute + c.second / 60; { if(c.minute >= 60) { c.hour = hour + c.minute / 60; c.minute = c.minute % 60; } else c.hour = hour; } c.second = c.second % 60; } else { c.minute = minute; c.hour = hour; } return c; } CTime CTime::operator - (int s) { CTime c; int sec; sec = second + minute * 60 + hour * 3600 - s; c.hour = sec / 3600; sec = sec % 3600; c.minute = sec / 60; sec = sec % 60; c.second = sec; return c; } CTime CTime::operator ++ (int) //后置++,下一秒 { CTime c; c.second = second ++; c.minute = minute; c.hour = hour; return c; } CTime CTime::operator ++ ()//前置++,下一秒 { CTime c; c.second = ++ second; c.minute = minute; c.hour = hour; return c; } CTime CTime::operator -- (int) //后置++,下一秒 { CTime c; c.second = second --; c.minute = minute; c.hour = hour; return c; } CTime CTime::operator -- ()//前置++,下一秒 { CTime c; c.second = -- second; c.minute = minute; c.hour = hour; return c; } CTime CTime::operator += (CTime &c) { CTime c1; c1.hour = hour + c.hour; c1.minute = minute + c.minute; c1.second = second + c.second; if(c1.second >= 60) { c1.second = c1.second - 60; c1.minute ++; if(c1.minute >= 60) { c1.minute = c1.minute - 60; c1.hour ++; if(c1.hour >= 24) { c1.hour = c1.hour - 24; } } } if(c1.minute >= 60) { c1.minute = c1.minute - 60; c1.hour ++; if(c1.hour >= 24) { c1.hour = c1.hour - 24; } } if(c1.hour >= 24) { c1.hour = c1.hour - 24; } return c1; } CTime CTime::operator -= (CTime &c) { CTime c1; int sec, sec1, sec2; sec1 = second + minute * 60 + hour * 3600; sec2 = c.second + c.minute * 60 + c.hour * 3600; sec = sec1 - sec2; c1.hour = sec / 3600; sec = sec % 3600; c1.minute = sec / 60; c1.second = sec % 60; return c1; } CTime CTime::operator += (int s) //返回s秒后的时间 { CTime c; c.second = second + s; if(c.second >= 60) { c.minute = minute + c.second / 60; { if(c.minute >= 60) { c.hour = hour + c.minute / 60; c.minute = c.minute % 60; } else c.hour = hour; } c.second = c.second % 60; } else { c.minute = minute; c.hour = hour; } return c; } CTime CTime::operator -= (int s) { CTime c; int sec; sec = second + minute * 60 + hour * 3600 - s; c.hour = sec / 3600; sec = sec % 3600; c.minute = sec / 60; sec = sec % 60; c.second = sec; return c; }
截图: