c++第五次实验

来源:互联网 发布:网络词 抓马什么梗 编辑:程序博客网 时间:2024/05/18 00:48

一:问题提出

要求:请在原类基础上,增加下列成员函数,要求前三个在类内定义,后三个在类内声明,类外定义。在main()数中增加适当的调用以展示扩充类定义后的功能。
add_a_sec()  //增加1秒钟
add_a_minute() //增加1分钟
add_an_hour() //增加1小时
add_seconds(int) //增加n秒钟
add_minutes(int) //增加n分钟
add_hours(int) //增加n小时
提示:(1)要考虑增加后超出取值范围的情形;(2)增加n秒后,秒数可能会超过60,调整秒数,并可以调用增加分钟数的成员函数,使时间合法;同理,增加分钟数也有类似问题。

 

二:代码

#include<iostream>using namespace std;class Time{public:void set_Time();        void show_time( );    void add_a_sec();  //增加1秒void add_a_minute(); //增加1分钟    void add_an_hour(); //增加1小时void add_seconds(int) ;//增加n秒钟void add_minutes(int); //增加n分钟void add_hours(int); //增加n小时 private:   bool is_time(int, int, int);   //这个成员函数设置为私有的,是合适的,请品味     int hour;  int minute;  int sec;  }; int main(){Time t1;t1.set_Time();t1.show_time();t1.add_a_sec();cout<<"增加1s后:";t1.show_time();t1.add_seconds(79);cout<<"增加79s后:";t1.show_time();return 0;} void Time::set_Time() {char c1,c2;  cout<<"请输入时间(格式hh:mm:ss)";  while(1)  {cin>>hour>>c1>>minute>>c2>>sec;  if(c1!=':'||c2!=':')  cout<<"格式不正确,请重新输入"<<endl;  else if (!is_time(hour,minute,sec))  cout<<"时间非法,请重新输入"<<endl;  else   break;  }  }void Time::show_time( )        {  cout<<hour<<":"<<minute<<":"<<sec<<endl;  }  bool Time::is_time(int h,int m, int s)  {  if (h<0 ||h>=24 || m<0 ||m>=60 || s<0 ||s>=60)          return false;  return true;  }void Time::add_a_sec(){sec++;if(sec==60){minute++;sec=0;if(minute==60){minute=0;hour++;if(hour==24){hour=0;}}}}  void Time::add_a_minute(){minute++;if(minute==60){minute=0;hour++;if(hour==24){hour=0;}}}void Time::add_an_hour(){hour++;if(hour==24)hour=0;}void Time::add_hours(int n){hour+=n;hour=hour%24;}void Time::add_minutes(int n){minute+=n;hour=hour+minute/60;minute=minute%60;hour=hour%24;}void Time::add_seconds(int n){sec+=n;minute=minute+sec/60;hour=hour+minute/60;sec=sec%60;minute%=60;hour%=24;}
 
三:运行结果
 


 

0 0