设为首页收藏本站

新微赢技术网

 找回密码
 注册
搜索
热搜: 回贴
查看: 1338|回复: 6
打印 上一主题 下一主题

[求助]复数除法的问题

[复制链接]
跳转到指定楼层
1#
发表于 2009-11-4 00:05:34 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
本人用运算符重载函数
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
请高手指教
7#
发表于 2009-11-4 00:05:41 | 只看该作者
showpos,noshowpos均是操纵符,均可将输入和输出格式化。
showpos:在非负数前显示+
noshowpos:在非负数前不显示+
noshowpos是默认的
回复 支持 反对

使用道具 举报

6#
发表于 2009-11-4 00:05:40 | 只看该作者
还可以这么些
#include<iomanip>
...

void display()
{
cout<<real<<showpos<<image<<'i'<<noshowpos<<endl;
}
回复 支持 反对

使用道具 举报

5#
发表于 2009-11-4 00:05:38 | 只看该作者
谢谢
回复 支持 反对

使用道具 举报

4#
发表于 2009-11-4 00:05:37 | 只看该作者
你的除法没错,错的是这里
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;}
}
回复 支持 反对

使用道具 举报

3#
发表于 2009-11-4 00:05:36 | 只看该作者
这个程序我是在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
回复 支持 反对

使用道具 举报

2#
发表于 2009-11-4 00:05:35 | 只看该作者
这是什么程序
麻烦写正确了再让别人判断
另外希望你做了拷贝函数
C是栈内的
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

申请友链|小黑屋|最新主题|手机版|新微赢技术网 ( 苏ICP备08020429号 )  

GMT+8, 2024-11-18 18:27 , Processed in 0.107338 second(s), 9 queries , Gzip On, Memcache On.

Powered by xuexi

© 2001-2013 HaiAn.Com.Cn Inc. 寰耽

快速回复 返回顶部 返回列表