第三周 任务三

来源:互联网 发布:网络用语rj是什么意思 编辑:程序博客网 时间:2024/04/27 20:56

#include <iostream>
using namespace std;
class Time
{
public:
 void set_time( );  
 void show_time( ); 
 inline void add_a_sec();  //增加1秒钟
 inline void add_a_minute(); //增加1分钟
 inline 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;
};


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;
}

inline void Time::add_a_sec() 
{
 ++sec;   

 if (sec>59)  

  add_a_minute(); 

inline void Time::add_a_minute() 

 ++minute;
 if (minute>59) 

  add_an_hour();
}

inline void Time::add_an_hour()

{
 ++hour;
 if (hour>23)
  hour=0;  
}
void Time::add_seconds(int n)

{
 sec+=n;  

 if (sec>59) 

 {
  add_minutes(sec/60);

  sec%=60;    

}

void Time::add_minutes(int n)

{
 minute+=n;
 if (minute>59)  

 {
  add_hours(minute/60);
  minute%=60;
 }
}

void Time::add_hours(int n)
{
 hour+=n;
 if (hour>23)
  hour%=24; 

}

<pre name="code" class="cpp">int main( )
{
 Time t1; 
 Time &t2=t1;
 t1.set_time( ); 
 cout<<"现在时间是:";
 t2.show_time( );

 t1.add_a_sec();  //增加1秒钟
 cout<<"增加1秒钟后:";
 t1.show_time( );

 t1.add_a_minute(); //增加1分钟
 cout<<"增加1分钟后:";
 t1.show_time( );

 t1.add_an_hour(); //增加1小时
 cout<<"增加1小时后:";
 t1.show_time( );

 t1.add_seconds(30); //增加30秒钟
 cout<<"增加30秒钟后:";
 t1.show_time( );

 t1.add_minutes(100); //增加100分钟
 cout<<"增加100分钟后:";
 t1.show_time( );

 t1.add_hours(5); //增加5小时
 cout<<"增加5小时后:";
 t1.show_time( );
 return 0;
}