第九周实验二

来源:互联网 发布:漳州seo 编辑:程序博客网 时间:2024/06/05 04:14
#include<iostream.h>//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);friend istream& operator >> (istream&, CTime&);//运算符重载为友元函数friend ostream& operator << (ostream&, CTime&);//运算符重载为友元函数//比较运算符(二目)的重载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所规定的时·分·秒后的时间CTime operator-(CTime &c);CTime operator+(int s);CTime operator-(int s);//一目运算符的重载CTime operator ++(int);//后置++,下一秒CTime operator ++();//前置++,下一秒,前置与后置返回值不一样CTime operator --(int);//后置--,前一秒CTime operator --();//前置--,前一秒//赋值运算符的重载CTime operator +=(CTime &c);CTime operator -=(CTime &c);CTime operator +=(int s);CTime operator -=(int s);};istream& operator >> (istream& input, CTime& c){char f1, f2;while(1){cout << "请输入需要操作的时间(格式:(小时:分钟:秒钟)):";input >> c.hour >> f1 >> c.minute >> f2 >> c.second;if(c.hour > 24 || c.hour < 0 || c.minute > 60 || c.minute < 0 || c.second > 60 || c.second < 0 ){cout << "输入时间有误!!!"<< endl;}else{if(f1 != ':' || f2 != ':')cout << "输入格式有误!!!" << endl;elsebreak;}}return input;}ostream& operator << (ostream& output, CTime& c){output << c.hour << ":" << c.minute << ":" << c.second <<endl;return output;}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(minute > t.minute){return true;}else{if(second > t.second){return true;}else{return false;}}}}bool CTime::operator <(CTime &t){if(hour < t.hour){return true;}else{if(minute < t.minute){return true;}else{if(second < t.second){return true;}else{return false;}}}}bool CTime::operator >=(CTime &t)//{if(*this < t)return false; else return true;}{if(hour < t.hour){return false;}else{if(minute < t.minute){return false;}else{if(second < t.second){return false;}}}}bool CTime::operator <=(CTime &t)//{if(*this > t)return false; else return true;}{if(hour > t.hour){return false;}else{if(minute > t.minute){return false;}else{if(second > t.second){return false;}}}}bool CTime::operator ==(CTime &t){if(hour != t.hour){return false;}else{if(minute != t.minute){return false;}else{if(second != t.second){return false;}}}}bool CTime::operator !=(CTime &t){if(hour != t.hour){return true;}else{if(minute != t.minute){return true;}else{if(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 = c1.minute + 1;}if(c1.minute >= 60){c1.minute = c1.minute - 60;c1.hour = c1.hour + 1;}if(c1.hour >= 24){c1.hour = c1.hour -24;}return c1;}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 < 0){c1.second = 60 + c1.second;c1.minute = c1.minute - 1;}if(c1.minute < 0){c1.minute =60 + c1.minute;c1.hour = c1.hour -1;}if(c1.hour < 0){c1.hour = 24 + c1.hour;}return c1;}CTime CTime::operator +(int s){CTime c1;c1.hour = hour;c1.minute = minute;c1.second = second + s;if(c1.second >= 60){c1.minute = c1.minute + (c1.second / 60);c1.second = c1.second % 60;}if(c1.minute >= 60){c1.hour = c1.hour + (c1.minute / 60);c1.minute = c1.minute % 60;}if(c1.hour >= 24){c1.hour = c1.hour % 24;}return c1;}CTime CTime::operator -(int s){CTime c1;c1.hour = hour;c1.minute = minute;c1.second = second - s;if(c1.second < 0){c1.minute = c1.minute - 1 - (-c1.second / 60);c1.second = 60 + c1.second % 60;}if(c1.minute < 0){c1.hour = c1.hour - 1 - (-c1.minute / 60);c1.minute = 60 + c1.minute % 60;}if(c1.hour < 0){c1.hour = 24 + c1.hour;}return c1;}CTime CTime::operator ++(int)//定义后置自增运算符 "++"重载函数{CTime temp(* this);second ++;if(second >= 60){second = second -60;++ minute;}if(minute >= 60){minute = minute - 60;++ hour;}if(hour >= 24){hour = hour - 24;}return temp;}CTime CTime::operator ++()//定义前置自增运算符"++"重载函数{if(++ second >= 60){second = second -60;++ minute;if(minute >= 60){minute = minute -60;++ hour;if(hour >= 24){hour = hour - 24;}}}return * this;}CTime CTime::operator --(int)//定义后置自减运算符 "--"重载函数{CTime temp(* this);second --;if(second < 0){second = 60 + second;-- minute;}if(minute < 0){minute = 60 + minute;-- hour;}if(hour < 0){hour = 24 + hour;}return temp;}CTime CTime::operator --()//定义前置自减运算符"--"重载函数{*this = *this -1; return *this;}{if(-- second <= 0){second = 60 + second;-- minute;}if(minute < 0){minute = 60 + minute;-- hour;}if(hour < 0){hour = 24 + hour;}return * this;}CTime CTime::operator +=(CTime &c)//{*this = *this + c;return *this;}{hour = hour + c.hour;minute = minute + c.minute;second = second + c.second;if(second >= 60){second = second - 60;minute = minute + 1;}if(minute >= 60){minute = minute - 60;hour = hour + 1;}if(hour >= 24){hour = hour -24;}return * this;//从定义前置"++" 来的灵感··int}CTime CTime::operator -=(CTime &c){hour = hour - c.hour;minute = minute - c.minute;second = second - c.second;if(second < 0){second = 60 + second;minute = minute - 1;}if(minute < 0){minute =60 + minute;hour = hour -1;}if(hour < 0){hour = 24 + hour;}return * this;}CTime CTime::operator +=(int s){hour = hour;minute = minute;second = second + s;if(second >= 60){minute = minute + (second / 60);second = second % 60;}if(minute >= 60){hour = hour + (minute / 60);minute = minute % 60;}if(hour >= 24){hour = hour % 24;}return * this;}CTime CTime::operator -=(int s){hour = hour;minute = minute;second = second - s;if(second < 0){minute = minute - 1 - (-second / 60);second = 60 + second % 60;}if(minute < 0){hour = hour - 1 - (-minute / 60);minute = 60 + minute % 60;}if(hour < 0){hour = 24 + hour;}return * this;}int main(){CTime c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c0, c00, c000,c0000;cout << "1,实现时间与具体秒数的相减" << endl;cin >> c1;cout << "c1 = " << c1;c000 = c1 - 240;cout << "c1 - 240 = " << c000 ;cout << "2,实现时间与具体秒数的相加" << endl;cin >> c2;cout << "c2 = " << c2;c0000 = c2 + 234;cout << "c2 + 234 = " << c0000 ;cout << "3.实现两时间的各种比较" << endl;cout << "c1 > c2" << (c1.operator >(c2)?" 成立":" 不成立") << endl;cout << "c1 >= c2" << (c1.operator >=(c2)?" 成立":" 不成立") << endl;cout << "c1 == c2" << (c1.operator ==(c2)?" 成立":" 不成立") << endl;cout << "4.实现两时间的各种比较" << endl;cin >> c3;cout << "c3 = " << c3;cin >> c4;cout << "c4 = " << c4;cout << "c3 < c4" << (c3.operator <(c4)?" 成立":" 不成立") << endl;cout << "c3 <= c4" << (c3.operator <=(c4)?" 成立":" 不成立") << endl;cout << "c3 != c4" << (c3.operator !=(c4)?" 成立":" 不成立") << endl;cout << "5.实现两时间的相加减" << endl;cin >> c5;cout << "c5 = " << c5;c0 = c1 + c5;cout << "c1 + c5 = " << c0 ;c00 = c1 - c5;cout << "c1 - c5 = " << c00 ;cout << "6.实现时间的后置自加运算" << endl;cin >> c6;cout << "c6 = " << c6;c6++;cout << "c6++ = " << c6;cout << "7.实现时间的前置自加运算" << endl;cin >> c7;cout << "c7 = " << c7;++ c7;cout << "++c7 = " << c7;cout << "8.实现时间的后置自减运算" << endl;cin >> c8;cout << "c8 = " << c8;c8 --;cout << "c8-- = " << c8;cout << "9.实现时间的前置自减运算" << endl;cin >> c9;cout << "c9 = " << c9;-- c9;cout << "--c9 = " << c9;cout << "10.实现时间与时间的+=运算" << endl;cin >> c10;cout << "c10 = " << c10;cin >> c11;cout << "c11 = " << c11;c10 += c11;cout << "(c10 += c11) = " << c10;cout << "11.实现时间与时间的-=运算" << endl;cin >> c12;cout << "c12 = " << c12;cin >> c13;cout << "c13 = " << c13;c12 -= c13;cout << "(c12 -= c13) = " << c12;cout << "12.实现时间与具体秒数的+=运算" << endl;cin >> c14;cout << "c14 = " << c14;c14 += 18;cout<< "(c14 += 18) = " << c14;cout << "13.实现时间与具体秒数的-=运算" << endl;cin >> c15;cout << "c15 = " << c15;c15 -= 15;cout << "(c15 -= 15) = " << c15;//system("pause");return 0;}

重点是主函数的改造

原创粉丝点击