新微赢技术网
标题:
[求助]复数除法的问题
[打印本页]
作者:
冰封シ绝恋
时间:
2009-11-4 00:05
标题:
[求助]复数除法的问题
本人用运算符重载函数
operator/定义在complex类中,real,image均定义为private,double型
complex complex::operator/(complex &t)
{
complex c;
c.real=(real*t.real+image*t.image)/(t.real*t.real+t.image*t.image);
c.image(real*t.image*(-1)+image*t.real)/(t.real*t.real+t.image*t.image);
return c;
}
int main()
{
complex c1(10,2),c2(5,1),c3;
c3=c1/c2;
c3.display();
return 0;
}
程序运行输出20i.
我认为应输出2
请高手指教
作者:
释放压力
时间:
2009-11-4 00:05
这是什么程序
麻烦写正确了再让别人判断
另外希望你做了拷贝函数
C是栈内的
作者:
熾天使rose
时间:
2009-11-4 00:05
这个程序我是在VC++6.0上运行的
#include <iostream>
using namespace std;
class complex
{
public:
complex(){real=0;image=0;}
complex(double a,double b):real(a),image(b){}
complex operator+(complex &);
complex operator-(complex &);
complex operator*(complex &);
complex operator/(complex &);
void display()
{
cout<<real;
if (image>0)
cout<<"+";
cout<<image<<"i"<<endl;
}
private:
double real;
double image;
};
complex complex::operator+(complex &temp)
{
return complex(real+temp.real,image+temp.image);
}
complex complex::operator-(complex &temp)
{
return complex(real-temp.real,image-temp.image);
}
complex complex::operator*(complex &temp)
{
return complex(real*temp.real-image*temp.image,real*temp.image+image*temp.real);
}
complex complex::operator/(complex &temp)
{
complex c;
c.real=(real*temp.real+image*temp.image)/(temp.real*temp.real+temp.image*temp.image);
c.image=(real*temp.image*(-1)+image*temp.real)/(temp.real*temp.real+temp.image*temp.image);
return c;
}
int main()
{
complex c1(15,3),c2(5,1),c3;
c3=c1+c2;
c3.display();
c3=c1-c2;
c3.display();
c3=c1*c2;
c3.display();
c3=c1/c2;
c3.display();
return 0;
}
运行结果为20+4i
10+2i
72+30i
30i
我对最后一个结果不明白,我认为是3
作者:
成熟之惑
时间:
2009-11-4 00:05
你的除法没错,错的是这里
void display()
{
cout<<real;
if (image>0)
cout<<"+";
cout<<image<<"i"<<endl;
}
real=3;
image=0.
所以输出30i. 而不是你的理解三十i..
改成这样就可以了
void display()
{
cout<<real;
if (image>0)
{ cout<<"+";
cout<<image<<"i"<<endl;}
}
作者:
ㄣ紸縡のoァ
时间:
2009-11-4 00:05
谢谢
作者:
清风
时间:
2009-11-4 00:05
还可以这么些
#include<iomanip>
...
void display()
{
cout<<real<<showpos<<image<<'i'<<noshowpos<<endl;
}
作者:
赌神
时间:
2009-11-4 00:05
showpos,noshowpos均是操纵符,均可将输入和输出格式化。
showpos:在非负数前显示+
noshowpos:在非负数前不显示+
noshowpos是默认的
欢迎光临 新微赢技术网 (http://bbs.weiying.cn/)
Powered by Discuz! X3.2