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

关于C++运算符重载的有关问题

2012-03-06 
关于C++运算符重载的问题。题目:利用重载运算符求两个时间(时、分、秒)的和、差等运算。我写了一个:可是老是说

关于C++运算符重载的问题。
题目:利用重载运算符求两个时间(时、分、秒)的和、差等运算。 
我写了一个:可是老是说我的有一处错误,哪位高手过来看一下。
#include<iostream.h>
//using namespace std;
struct 
  { int x,y,z; 
  } time1,time2,time3; 
 &operator++(struct &time,struct &time)
{ int x,y,z;
  time3.x=time1.x+time2.x;
  time3.y=time1.y+time2.y;
  tine3.z=time1.z+time2.z; 
  z= time3.z;y= time3.y;x= time3.x;  
  time3.z%=60;
  time3.y=(time3.y+z/60)%60;
  time3.x=(time3.x+(y+z/60)/60)%24;
  return time3;
}
int main ()
{
   
 cout<<"please input the data1:"<<endl;
 cin>>time1.x>>time1.y>>time1.z>>endl;
 cout<<"please input the data2:"<<endl;
 cin>>time2.x>>time2.y>>time2.z>>endl;
 time3=time1++time2;
 cout<<"the result is :"<<time3.x<<"/"<<time3.y<<"/"<<time3.z<<endl;
 return 0;  
 
}


[解决办法]

C/C++ code
 
struct MyTime

public:
MyTime(int h = 0, int m = 0, int s = 0) : x(h), y(m), z(s){}
int x;
int y;
int z; 
};

MyTime operator+(MyTime& time1, MyTime& time2)
{
int x , y, z;
z = time1.z + time2.z;
y = time1.y + time2.y;
x = time1.x + time2.x;
 
if (z >= 60)
{
y += z/60;
z %= 60;
}

if (y >= 60)
{
x += y/60;
y %= 60;
}

if (x >= 24)
{
x -= 24;

}

return MyTime(x, y, z);
}
int main ()
{
MyTime time1, time2, time3;

cout < < "please input the data1:" < <endl;
cin >> time1.x >> time1.y >> time1.z;
cout < < "please input the data2:" < <endl;
cin >> time2.x >>time2.y >>time2.z ;
time3 = time1 + time2;
cout < <"the result is :" < <time3.x < <"/" < < time3.y < <"/" < <time3.z < <endl;
return 0; 
};


[解决办法]
C/C++ code
#include <iostream> using namespace std; struct Time {public:    int x,y,z;  };  Time operator+(Time& time1, Time& time2) {    Time time3;    int x,y,z;     time3.x=time1.x+time2.x;     time3.y=time1.y+time2.y;     time3.z=time1.z+time2.z;      z= time3.z;y= time3.y;x= time3.x;       time3.z%=60;     time3.y=(time3.y+z/60)%60;     time3.x=(time3.x+(y+z/60)/60)%24;     return time3; } int main () {    Time time1,time2,time3;    cout << "please input the data1:" << endl;     cin >> time1.x >> time1.y >> time1.z;     cout << "please input the data2:" << endl;     cin >> time2.x >> time2.y >> time2.z;     time3=time1+time2;     cout << "the result is :" << time3.x << "/" << time3.y << "/" << time3.z << endl;     return 0;   } 

热点排行