您的位置:首页 > 其它

时间类的运算符

2015-06-25 22:07 225 查看
问题及代码:
/*。
*Copyright(c)2014,烟台大学计算机学院
*All right reserved,
*文件名:test.cpp
*作者:liu_feng_zi_
*完成日期:2015年6月25日
*版本号:v1.0
*问题描述:C++时间类的运算符重载
*输入描述:
*程序输出:
*/
#include <iostream>
using namespace std;
class Time
{
public:
Time():hour(0),minute(0),second(0) {}
Time(int h,int m,int s)
{
hour=(h>=24||h<0)?0:h;
minute=(m>=60||m<0)?0:m;
second=(s>=60||s<0)?0:s;
}
Time operator+(Time &);
Time operator+(int &);
friend Time operator+(int,Time &);
friend ostream& operator << (ostream& output, Time & c);
private:
int hour;
int minute;
int second;
};
Time Time::operator+(Time &t)
{
Time tt;
tt.second=second+t.second;
tt.minute=minute+t.minute;
tt.hour=hour+t.hour;
if(tt.second>=60)
{
tt.second-=60;
tt.minute++;
}
if(tt.minute>=60)
{
tt.minute-=60;
tt.hour++;
}
if(tt.hour>=24)
tt.hour-=24;
return tt;
}
Time Time::operator+(int &s)
{
Time tt;
int n;
tt.second=second+s;
tt.minute=minute;
tt.hour=hour;
if(tt.second>=60)
{
n=tt.second/60;
tt.second%=60;
tt.minute+=n;
}
if(tt.minute>=60)
{
n=tt.minute/60;
tt.minute%=60;
tt.hour+=n;
}
if(tt.hour>=24)
tt.hour%=24;
return tt;
}
Time operator+(int s,Time &t)
{
Time tt;
int n;
tt.second=s+t.second;
tt.minute=t.minute;
tt.hour=t.hour;
if(tt.second>=60)
{
n=tt.second/60;
tt.second%=60;
tt.minute+=n;
}
if(tt.minute>=60)
{
n=tt.minute/60;
tt.minute%=60;
tt.hour+=n;
}
if(tt.hour>=24)
tt.hour%=24;
return tt;
}
ostream& operator << (ostream& output, Time & c)
{
output<<c.hour<<":"<<c.minute<<":"<<c.second<<endl;
return output;
}
int main()
{
//测试Time类对象加Time类对象
int hour,minute,second;
cin>>hour>>minute>>second;
Time t1(hour,minute,second);
cin>>hour>>minute>>second;
Time t2(hour,minute,second);
Time t3=t1+t2;
cout<<"t1+t2=";
cout<<t3;

//测试时间对象加整数
int i;
cin>>hour>>minute>>second;
cin>>i;
t3=Time(hour,minute,second)+i;
cout<<"t1+i=";
cout<<t3;

//测试整数加时间对象
cin>>i;
cin>>hour>>minute>>second;
t1=Time(hour,minute,second);
t3=i+t1;
cout<<"i+t1=";
cout<<t3;

return 0;
}


运行结果:
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: