【问题描述】
定义一个时间类CTime,分钟和秒钟是其两个私有成员数据。输入一个起始时间和一个结束时间(起始时间早于结束时间),通过运算符重载-(减号),计算这两个时间相隔多少秒钟。说明:这两个时间在同一小时之内,且采用60分钟60秒钟的计时分式,即从00:00-59:59。
【输入形式】
测试输入包含若干测试用例,每个测试用例占一行。每个测试用例包括四个数,每个数之间用空格间隔,每个数都由两位数字组成,第一个数和第二个数分别表示起始时间的分钟和秒钟,第三个数和第四个数分别表示结束时间的分钟和秒钟。当读入一个测试用例是00 00 00 00时输入结束,相应的结果不要输出。
【输出形式】
对每个测试用例输出一行。输出一个数即可,表示两者之间间隔的秒钟数。
【样例输入】
12 11 12 58
00 13 16 00
09 07 23 59
00 00 00 00
【样例输出】
47
947
892
#include <iostream>
using namespace std;
#define N 100
class CTime
{
private:
int fen,miao;
public:
void input();
bool beZero();
friend ostream & operator<<(ostream& out,const CTime& t);
CTime operator-(CTime &b) const;
};
void CTime::input()
{
while(1)
{
cin>>fen>>miao;
if(fen>=0&&fen<=59&&miao>=0&&miao<=59)
break;
else
cout<<"error"<<endl;
}
}
bool CTime::beZero()
{
if(fen==0&&miao==0)
{
return 1;
}
else
return 0;
}
ostream & operator<<(ostream& out,const CTime& t)
{
out<<60*t.fen+t.miao;
return out;
}
CTime CTime::operator-(CTime &b) const
{
CTime out;
if(fen>=b.fen)
out.fen=fen-b.fen;
else
out.fen=b.fen-fen;
if(miao>=b.miao)
out.miao=miao-b.miao;
else
out.miao=b.miao-miao;
return out;
}
int main()//main函数是答题系统已经给定的,无法修改
{
CTime time[N];
int count=-1;
do
{
count++;
time[2*count].input();
time[2*count+1].input();
}while(!(time[2*count].beZero()&&time[2*count+1].beZero()));
for(int i=0;i<count;i++)
{
cout<<time[2*i+1]-time[2*i]<<endl;
}
return 0;
}
题目要求00 00,00 00那一项不输出,但是总会多出一个换行导致出错
如图:
有无董哥知道怎么达到预定结果
PS:main函数是答题系统固定的,无法修改