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

程序有点有关问题,麻烦大家看看

2012-04-03 
程序有点问题,麻烦大家看看作业题,大家不要鄙视偶,写一个复数类重载除法#includeiostreamusingnamespace

程序有点问题,麻烦大家看看
作业题,大家不要鄙视偶,写一个复数类重载除法
#include   <iostream>
using   namespace   std;

class   complex
{
  public:
  complex(double   r=0,double   i=0);
  complex   operator   /(const   complex&   num);
getReal();
getImage();
  protected:
double   _real;
double   _image;
};
complex::complex(double   r,double   i)
{
  _real=r;
  _image=i;
  return;
}

complex   complex::operator   /(const   complex&   num)
{
complex   temp;
double   t=num._real*num._real+num._image*num._image;
temp._real=(_real*num._real+_image*num._image)/t;
temp._image=(_image*num._real-_real*num._image)/t;
return   temp;
}
complex::getReal()
{
cout < <_real < <endl;
return   _real;
}
complex::getImage()
{
cout < <_image < <endl;
return   _image;
}
int   main()
{
  complex   a(2,3),b(3,4),c;
  c=a/b;
cout < <c.getReal() < <endl;
cout < <c.getImage() < <endl;
  return   0;
}

输出是
0.70
0
0.04
0
怎么c.getReal()和c.getImage()都变成0了,很郁闷

[解决办法]
修改如下:
=======================
#include <iostream>
using namespace std;

class complex
{
public:
complex(double r=0,double i=0);
complex operator /(const complex& num);
double getReal();
double getImage();
protected:
double _real;
double _image;
};
complex::complex(double r,double i)
{
_real=r;
_image=i;
}

complex complex::operator /(const complex& num)
{
complex temp;
double t=num._real*num._real+num._image*num._image;
temp._real=(_real*num._real+_image*num._image)/t;
temp._image=(_image*num._real-_real*num._image)/t;
return temp;
}
double complex::getReal()
{
cout < <_real < <endl;
return _real;
}
double complex::getImage()
{
cout < <_image < <endl;
return _image;
}
int main()
{
complex a(2,3),b(3,4),c;
c=a/b;
cout < <c.getReal() < <endl;
cout < <c.getImage() < <endl;
return 0;
}

热点排行