请问各位这条程序错在哪里?谢谢!
#include <iostream>
using namespace std;
class time24
{
public:
time24(int h = 0, int m = 0);
void addTime(int m);
time24 duration(const time24& t);
void readTime();
void writeTime();
int getHour() const { return hour; }
int getMinute() const {return minute ; }
private:
int hour , minute;
void normalizeTime();
};
void time24 :: normalizeTime()
{
int extraHours = minute / 60;
minute = minute%60;
hour = (hour + extraHours) % 24;
}
time24 :: time24(int h,int m) : hour(h) ,minute(m)
{
normalizeTime();
}
time24 time24::duration(const time24& t)
{
int currTime = hour*60 + minute;
int tTime = t.hour*60 + minute;
if (tTime < currTime)
throw "time24 duration() : argument is an earlier time ";
else
return time24( 0 , tTime-currTime );
}
void time24 :: readTime()
{
char delimiter;
cin > > hour > > delimiter > > minute;
normalizeTime();
}
void time24 :: addTime(int m )
{
minute += m;
if(minute> =60)
{
minute %= 60;
hour = hour + 1;
}
}
void time24 :: writeTime()
{
cout < < hour < < ": " < <minute < <endl;
}
int main()
{
time24 tA(11,30) ,tB ,tC;
tB.readTime();
tB.addTime(50);
tB.writeTime ();
tA.writeTime ();
tC = tA.duration(tB);
tC.writeTime();
cout < < (tC.getHour() * 60 + tC.getMinute()) < < endl;
return 0;
}
______________________________________________________
当输入 13:00
结果是 13:00
14:5
11:30
3:0
180
______________________________________________________
为什么是 3:0 而不是 2:35
问题出在哪啊!
[解决办法]
下面这个函数出了问题,马虎啊!~~~
time24 time24::duration(const time24& t)
{
int currTime = hour*60 + minute;
int tTime = t.hour*60 + minute; //改成int tTime = t.hour*60 + t.minute;
if (tTime < currTime)
throw "time24 duration() : argument is an earlier time ";
else
return time24( 0 , tTime-currTime );
}
------解决方案--------------------
int tTime = t.hour*60 + t.minute;