标题:[求助]复数除法的问题
只看楼主
hitlfy
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2006-9-8
 问题点数:0 回复次数:7 
[求助]复数除法的问题
本人用运算符重载函数
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
请高手指教
搜索更多相关主题的帖子: real image 复数 除法 complex 
2006-09-15 23:05
song4
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:38
帖 子:1533
专家分:4
注 册:2006-3-25
得分:0 
这是什么程序
麻烦写正确了再让别人判断
另外希望你做了拷贝函数
C是栈内的

嵌入式 ARM 单片机 驱动 RT操作系统 J2ME LINUX  Symbian C C++ 数据结构 JAVA Oracle 设计模式 软件工程 JSP
2006-09-16 12:42
hitlfy
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2006-9-8
得分:0 

这个程序我是在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

2006-09-17 12:04
corrupt
Rank: 2
等 级:新手上路
威 望:3
帖 子:535
专家分:0
注 册:2004-9-29
得分:0 
你的除法没错,错的是这里
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;}
}

2006-09-17 20:40
hitlfy
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2006-9-8
得分:0 
谢谢
2006-09-20 11:35
sunzhuofeng
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2006-6-27
得分:0 
还可以这么些
#include<iomanip>
...

void display()
{
cout<<real<<showpos<<image<<'i'<<noshowpos<<endl;
}
2006-09-21 18:47
sunzhuofeng
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2006-6-27
得分:0 
showpos,noshowpos均是操纵符,均可将输入和输出格式化。
showpos:在非负数前显示+
noshowpos:在非负数前不显示+
noshowpos是默认的
2006-09-21 18:51
pengxi
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2006-9-22
得分:0 
2006-09-22 19:31



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-90497-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.436981 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved