究竟是忽略了什么特殊的情况?望有大神帮忙指正
/*
2薪酬(10分)
题3时间间隔(10分)
题目内容:定义一个Time类(时、分、秒),能够实现对时间的输出,再定义一个Interval类能够计算出两个时间之间的间隔。要求两个类里面都必须有构造函数。注意输入输出格式要和样例统一。
输入格式:输入两个时间,用回车作为间隔
输出格式:输出时间间隔
输入样例:
12:59:59
20:15:15
输出样例:
07:15:16
*/
#include<iostream>
#include<cstring>
#include<cmath>
#include<iomanip>
using namespace std;
class Time{
protected:
int h;
int m;
int s;
public:
void print();
Time(int h,int m,int s):h(h),m(m),s(s){}
Time(){h=m=s=0;};
friend class Interval;
};
void Time::print(){
while(s>=60){s-=60;m++;}
while(m>=60){m-=60;h++;}
while(h>=24){h-=24;}
cout.fill('0');
cout<<setw(2)<<h<<":"<<setw(2)<<m<<":"<<setw(2)<<s;
}
class Interval{
private:
Time a;
Time b;
Time period;
public:
Interval(Time a,Time b);
void print();
};
Interval::Interval(Time a,Time b):a(a),b(b){
if(b.s-a.s>=0)
{
period.s=b.s-a.s;
}
else
{
period.s=b.s-a.s+60;
b.m--;
}
if(b.m-a.m>=0)
{
period.m=b.m-a.m;
}
else
{
period.m=b.m-a.m+60;
b.h--;
}
period.h=b.h-a.h;
if(period.h<0)period.h=-period.h;
}
void Interval::print(){
period.print();
}
int main()
{ int h,m,s;
char c;
cin>>h>>c>>m>>c>>s;
Time a=Time(h,m,s);
cin>>h>>c>>m>>c>>s;
Time b=Time(h,m,s);
Interval interval=Interval(a,b);
interval.print();
return 0;
}