C++程序设计实验报告(9-2)
来源:互联网 发布:调查报告数据统计样本 编辑:程序博客网 时间:2024/05/22 17:30
/*
实验内容:实现Time类中的运算符重载
* 程序的版权和版本声明部分
* Copyright (c) 2011, 烟台大学计算机学院学生
* All rights reserved.
* 文件名称: 实现Time类中的运算符重载
* 作 者: 杨坛坛
* 完成日期: 2012 年 4 月 18 日
* 版 本号: vc2008
*/
源程序:
#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);//输入输出运算的重载friend istream &operator>>(istream &in,CTime &t);friend ostream &operator<<(ostream &out,CTime t); //比较运算符(二目)的重载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秒前的时间};//构造函数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;}// 重载输入运算符>>istream &operator>>(istream &in,CTime &t){char ch1,ch2;while(1){cout<<"请输入时间(hh:mm:ss) ";cin>>t.hour>>ch1>>t.minute>>ch2>>t.second;if (ch1==':' && ch2==':')if (t.hour>-1 && t.hour<24 && t.minute>-1 && t.minute<60 && t.second>-1 && t.second<60) break;cerr<<"时间格式不正确! 请重新输入";}return cin;}// 重载输出运算符<<ostream &operator<<(ostream &out,CTime t){out<<t.hour<<':'<<t.minute<<':'<<t.second;return out;}//比较运算符的重载bool CTime::operator > (CTime &t) // 判断时间t1>t2{if (hour>t.hour) return true;if (hour<t.hour) return false;if (minute>t.minute) return true;if (minute<t.minute) return false;if (second>t.second) return true;return false;}bool CTime::operator < (CTime &t)// 判断时间t1<t2{if (hour<t.hour) return true;if (hour>t.hour) return false;if (minute<t.minute) return true;if (minute>t.minute) return false;if (second<t.second) return true;return false;}bool CTime::operator == (CTime &t)// 判断时间t1==t2{if (*this<t || *this>t) return false;return true;}bool CTime::operator != (CTime &t) // 判断时间t1!=t2{if (*this==t) return false;return true;}bool CTime::operator >= (CTime &t)// 判断时间t1>=t2{if (*this<t) return false;return true;}bool CTime::operator <= (CTime &t) // 判断时间t1<=t2{if (*this>t) return false;return true;}//二目运算符的重载// 计算时间之和, 返回c所规定的时、分、秒后的时间,例t1(8,20,25),t2(11,20,50),t1+t2为:41:15CTime CTime::operator + (CTime &t){int h,m,s;s=second+t.second;m=minute+t.minute;h=hour+t.hour;if (s>59){s-=60;m++;}if (m>59){m-=60;h++;}while (h>23) h-=24;CTime t0(h,m,s);return t0;}//返回s秒后的时间CTime CTime::operator+(int s){int ss=s%60;int mm=(s/60)%60;int hh=s/3600;CTime t0(hh,mm,ss);return *this+t0;}// 计算时间之差CTime CTime::operator - (CTime &t){int h,m,s;s=second-t.second;m=minute-t.minute;h=hour-t.hour;if (s<0){s+=60;m--;}if (m<0){m+=60;h--;}while (h<0) h+=24;CTime t0(h,m,s);return t0;}//返回s秒前的时间CTime CTime::operator-(int s){int ss=s%60;int mm=(s/60)%60;int hh=s/3600;CTime t0(hh,mm,ss);return *this-t0;}//一目运算符的重载CTime CTime::operator++(int)//后置++,下一秒{CTime t=*this;*this=*this+1;return t;}CTime CTime::operator++()//前置++,下一秒{*this=*this+1;return *this;}CTime CTime::operator--(int)//后置--,前一秒{CTime t=*this;*this=*this-1;return t;}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)//返回s秒后的时间{*this=*this+s;return *this;}CTime CTime::operator-=(int s)//返回s秒前的时间{*this=*this-s;return *this;}int main(){CTime t1,t2,t;cout<<"t1为:";cin>>t1;cout<<"t2为:";cin>>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;cout<<"t1= "<<t1<<endl;cout<<"t2= "<<t2<<endl;cout<<"t=t1++"<<endl;t=t1++;cout<<"t= "<<t<<" t1= "<<t1<<endl;cout<<"t=++t1"<<endl;t=++t1;cout<<"t= "<<t<<" t1= "<<t1<<endl;cout<<"t1+t2= "<<t1+t2<<endl;cout<<"t1-t2= "<<t1-t2<<endl;cout<<"t1+2000= "<<t1+2000<<endl;cout<<"t1-5000= "<<t1-5000<<endl;system("pause");return 0;}
运行结果:
感想:由上周基础,这几个任务还是挺简单的
- C++程序设计实验报告(9-2)
- C 程序设计实验报告(二)
- 第一次C程序设计实验报告
- 第二次C程序设计实验报告
- 第三次C程序设计实验报告
- C++程序设计实验报告(9-1)
- C++程序设计实验报告(9-3)
- C++程序设计实验报告(9-4)
- C++程序设计实验报告(9-5)
- C++程序设计实验报告《一》(2)
- C++程序设计实验报告(8-2)
- 程序设计实验报告(15.1)
- 第四次C程序设计实验报告
- 第五次C程序设计实验报告
- C程序设计课程-第七次实验报告
- c程序设计第七次上机实验报告
- 第七次C程序设计实验报告
- 第八次C程序设计实验报告
- s3c2410看门狗与字符设备、混杂设备和平台设备
- 千万级pv高性能高并发网站架构与设计
- poj 1730 Perfect Pth Powers
- 伪码之美
- mapgis6.7二次开发vc6_demo 之三(文件操作通用函数)
- C++程序设计实验报告(9-2)
- treeStore可以有的配置项
- 补码——计算机中数的表示
- asp.net 单点登录,浏览器关闭清空session
- Android Zip压缩解压缩
- stagefright框架(二)- 和OpenMAX的運作
- 第九周实验报告5
- 第九周实验报告(一)
- ping broadcast address ( ping and nmap )