首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

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

2012-03-22 
请问各位这条程序错在哪里?谢谢!#include iostreamusingnamespacestdclasstime24{public:time24(inth0

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

热点排行