第八周实验报告2
2012-04-10 20:43
232 查看
实验目的:完成一大堆运载符的重载
实验代码:
实验结果截图:
实验心得:
好吧,我承认,在我的实验报告中经常会有一些奇怪的情况,时常会写出一些挺长的代码,可是,老师,不带这样的,还从来没写过那么那么那么长的一坨那。
算了抱怨就到这吧,还是写点有技术性的东西好了,老师说的也没错,虽然代码会很长,可是都是以前做过的东西,也有很多重复性的工作,有难住我的那,是在时间之上增加s秒和减少s秒的函数,因为考虑进位和借位的问题费了好多的功夫,结果,最后发现自己是多么的愚蠢,呵,璇子说的没错,一开始就把时间都化成秒,减完之后在化回时间不就好了嘛!所以啊,还是有学到好的东西。特别的,感觉到,越是长的代码,调理的重要性就越显的重要,不然很容易自己把自己困住手脚,
不能动弹,所以啊,做事也好,写代码也好,一定要思维清晰哦。
实验代码:
#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秒前的时间 }; void main() { CTime t1(8, 20, 25), t2(11, 20, 50), t, t3; 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 ="; t3 = t2 - t1; t3.display(); int n; cout << endl; t.display(); cout <<"请输入您想在原有时间之上增加的秒数:"; cin >> n; t = t + n; t.display(); int m; cout << "请输入您想在当前时间之上减少的秒数:"; cin >> m; t = t - m; t.display(); cout << endl; t = t ++; cout << "t++ = "; t.display(); t = ++ t; cout << "++t ="; t.display(); cout << endl; t = t --; cout << "t-- = "; t.display(); t = -- t; cout << "--t = "; t.display(); cout << endl; t = t1 += t2; cout << "t1 += t2 = "; t.display(); t = t2 -= t1; cout << "t2 -= t1 = "; t.display(); int s; cout << endl; t.display(); cout << "请输入您想在当前时间之上增加的秒数: "; cin >> s; t = t += s; t.display(); int s1; cout << "请输入您想在当前时间之上减少的秒数: "; cin >> s1; t = t -= s1; t.display(); system("pause"); } 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) { 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; }
实验结果截图:
实验心得:
好吧,我承认,在我的实验报告中经常会有一些奇怪的情况,时常会写出一些挺长的代码,可是,老师,不带这样的,还从来没写过那么那么那么长的一坨那。
算了抱怨就到这吧,还是写点有技术性的东西好了,老师说的也没错,虽然代码会很长,可是都是以前做过的东西,也有很多重复性的工作,有难住我的那,是在时间之上增加s秒和减少s秒的函数,因为考虑进位和借位的问题费了好多的功夫,结果,最后发现自己是多么的愚蠢,呵,璇子说的没错,一开始就把时间都化成秒,减完之后在化回时间不就好了嘛!所以啊,还是有学到好的东西。特别的,感觉到,越是长的代码,调理的重要性就越显的重要,不然很容易自己把自己困住手脚,
不能动弹,所以啊,做事也好,写代码也好,一定要思维清晰哦。
相关文章推荐
- 第八周实验报告2
- 第八周实验报告3
- 第八周实验报告(任务1-方案1)
- 第八周实验报告(1)
- 《C++第八周实验报告1-1(2)》----复数类中的运算符重载,用类的友元函数
- 第八周实验报告(三)完成分数的加减乘除、求反、比较
- 《C++第八周实验报告1-1(2)》----复数类中的运算符重载,用类的友元函数
- 第八周实验报告(任务1-方案2)
- 第八周实验报告1.2
- 第八周实验报告(2)
- 《C++第八周实验报告1-1(1)》---复数类中的运算符重载用类的成员函数完成
- 第八周实验报告(1)
- 第八周实验报告 任务三
- 第八周实验报告1.2
- 《C++第八周实验报告1-1(2)》---在方案二的基础上,扩展+、-、*、/运算符的功能,使之能与double型数据进行运算
- 第八周实验报告(3)
- 第八周实验报告(2)
- 第八周C++实验报告(一)
- 三角形01-第八周实验报告
- 《第八周实验报告任务1》