/*
* 作 者: 霍雨佳
* 完成日期:2014 年3月12日
* 版 本 号:v1.0
* 问题描述:玩日期。
* 样例输入:
* 样例输出:
* 问题分析:玩日期完成以下要求:
请在原类基础上,增加下列成员函数,要求前三个在类内定义(将是内置成员函数),后三个在类内声明,类外定义。
在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秒钟
{
int h,m,s;
s=sec;
m=minute;
h=hour;
cout<<"增加1秒钟后时间为:"<<endl;
if((s+1)<60)
{
s+=1;
}
else
{
s=s-60;
if((m+1)<60)
{
m+=1;
}
else
{
m=m-60;
if((h+1)<24)
h+=1;
else
{
h=h-24;
cout<<"第二天";
}
}
}
cout<<h<<":"<<m<<":"<<s<<endl;
}
void add_a_minute() //增加1分钟
{
int h,m,s;
s=sec;
m=minute;
h=hour;
cout<<"增加1分钟后时间为:"<<endl;
if((m+1)<60)
{
m+=1;
}
else
{
m=m-60;
if((h+1)<24)
h+=1;
else
{
h=h-24;
cout<<"第二天";
}
}
cout<<h<<":"<<m<<":"<<s<<endl;
}
void add_an_hour() //增加1小时
{
int h,m,s;
s=sec;
m=minute;
h=hour;
cout<<"增加1小时后时间为:"<<endl;
if((h+1)<24)
h+=1;
else
{
h=h-24;
cout<<"第二天";
}
cout<<h<<":"<<m<<":"<<s<<endl;
}
void add_seconds(); //增加n秒钟
void add_minutes(); //增加n分钟
void add_hours(); //增加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;
}
void Time::add_seconds() //增加n秒钟
{
int h,m,s,i,j,l,b,g=1;
s=sec;
m=minute;
h=hour;
cout<<"请输入要增加的秒数";
cin>>b;
s=s+b;
cout<<"增加"<<b<<"秒钟后时间为:"<<endl;
for(i=0; s>=60; i++)
{
if(s<60)
{
s+=1;
}
else
{
s=s-60;
if((m+1)<60)
{
m+=1;
}
else
{
for(j=0; m>=60; j++)
{
m=m-60;
if((h+1)<24)
h+=1;
else
for(l=0; h>=24; l++)
{
h=h-24;
g++;
}
}
}
}
if(g>1)
cout<<"第"<<g<<"天";
cout<<h<<":"<<m<<":"<<s<<endl;
}
}
void Time::add_minutes() //增加n分钟
{
int h,m,s,i,j,b,g=1;
s=sec;
m=minute;
h=hour;
cout<<"请输入要增加的分钟数";
cin>>b;
m=m+b;
cout<<"增加"<<b<<"分钟后时间为:"<<endl;
if(m<60)
{
m+=b;
}
else
{
for(i=1; m>=60; i++)
{
m=m-60;
if((h+1)<24)
h+=1;
else
for(j=0; h>=24; j++)
{
h=h-24;
g++;
}
}
}
if(g>1)
cout<<"第"<<g<<"天";
cout<<h<<":"<<m<<":"<<s<<endl;
}
void Time::add_hours() //增加n小时
{
int h,m,s,l,i=1;
s=sec;
m=minute;
h=hour;
cout<<"请输入要增加的小时";
cin>>l;
h=h+l;
cout<<"增加"<<l<<"小时后时间为:"<<endl;
if(h<24)
h+=l;
else
{
for(i=1; h>=24; i++)
{
h=h-24;
}
}
if(i>1)
cout<<"第"<<i<<"天";
cout<<h<<":"<<m<<":"<<s<<endl;
}
int main( )
{
Time t1;
t1.set_time( );
t1.add_a_sec(); //增加1秒钟
t1.add_a_minute(); //增加1分钟
t1.add_an_hour(); //增加1小时
t1.add_seconds();//增加n秒钟
t1.add_minutes(); //增加n分钟
t1.add_hours(); //增加n小时
return 0;
}
运行结果:
其实题本身并不难,但需要注意许多小细节,唉唉~
我这马马虎虎的性格真是不行啊,老是有些小问题注意不到,奈何只能一遍遍的改~~~
向细心看齐……