读书人

请教各位这条程序错在哪里?多谢

发布时间: 2012-03-22 17:43:57 作者: rapoo

请问各位这条程序错在哪里?谢谢!
#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;

读书人网 >C++

热点推荐