跪求各位高手帮忙啊!!!!!

nick8867 2004-08-18 11:36:44
兄弟有个问题实在是做不出来了,给位能否帮一把


复数z=a+bi,其中a和b是浮点数,分别称为实部和虚部,I代表-1的平方根。复数的除法定义为:
( a + b i ) / ( c + d i ) = ( a c + b d ) / ( c2 + d2) + [ ( b c – a d ) / ( c2+d2 ) ] i
要求实现一个表示复数的类Complex,并且完成以下操作:
(1)、重载+和/,以支持复数的加法和除法运算;
(2)、设计默认构造函数,将实部和虚部设为零;
(3)、要求使用C++差错捕获机制,处理错误;
(4)、有简单德测试程序。
...全文
158 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhangfjj 2004-08-18
  • 打赏
  • 举报
回复
自己写复数类,也很容易呀。
这样的题目,还是自己写的好。
不然,毕业以后,怎么办?
honestguy 2004-08-18
  • 打赏
  • 举报
回复
差错捕获机制?!
不会!
nick8867 2004-08-18
  • 打赏
  • 举报
回复
各位兄台说的是,可这逼急了 实在是写不出来啊,能否帮小第一把啊 谢拉
nicknide 2004-08-18
  • 打赏
  • 举报
回复
还跪……该不是交不上作业,老师叫跪的吧…………

还是自己写作业比较好啊……
  • 打赏
  • 举报
回复
没骨气的家伙,std::complex完全满足你的要求
nick8867 2004-08-18
  • 打赏
  • 举报
回复
谢谢这位兄台。我会认真看的
socrazylee 2004-08-18
  • 打赏
  • 举报
回复
我刚写了一个 给你参考一下
#include <iostream>
//using namespace std;

class Complex
{
public:
Complex(double i=0,double j=0 )
{
real=i;
imag=j;
}
friend Complex operator+(Complex c1,Complex c2);

friend Complex operator-(Complex c1,Complex c2);
void print();
//friend Complex operator/(Complex c1,Complex c2)
//{
// if(不满足要求的条件)
// thow 不满足条件的数;
// return Complex((c1.real*c2.real+c1.imag*c2.imag)/())此处为除法的实现
//}//应该在这个重载运算符里边抛出异常;
private:
double real;
double imag;

};
void Complex::print()
{
std::cout<<real<<"+"<<imag<<"i"<<std::endl;
}
Complex operator+(Complex c1,Complex c2)
{
return Complex(c1.real+c2.real,c1.imag+c2.imag);
}
Complex operator-(Complex c1,Complex c2)
{
return Complex(c1.real-c2.real,c1.imag-c2.imag);
}
void main()
{

Complex c1(1,2),c2(2,3),c3,c4,c5;
c3=c1+c2;
c3.print();
c4=c1-c2;
c4.print();
/*try
{
c5=c1/c2;
}
catch(Complex c)
{
std::cout<<"错误";
}*/
//上面是对可能出现异常的句子进行异常处理
}
nick8867 2004-08-18
  • 打赏
  • 举报
回复
楼上的说的好,我写了一个大家帮我看看要怎么改
# include <math.h>
# include <malloc.h>
# include <memory.h>
# include <iostream.h>
//////////////////////////////////////////////////////////
// internal definitions

#define PI (double)3.14159265359

/*complex number*/
typedef struct
{
double re;
double im;
}COMPLEX;

/*complex add*/
COMPLEX
{
re=0;
im=0;

}
COMPLEX Add(COMPLEX c1, COMPLEX c2)
{
COMPLEX c;
c.re=c1.re+c2.re;
c.im=c1.im+c2.im;
return c;
}

/*complex multiple*/
COMPLEX Mul(COMPLEX c1, COMPLEX c2)
{
COMPLEX c;
c.re=c1.re*c2.re-c1.im*c2.im;
c.im=c1.re*c2.im+c2.re*c1.im;
return c;
}
wwwooowww 2004-08-18
  • 打赏
  • 举报
回复
这是一个弄明白运算符重载的绝好例子,你让别人做了,自己一无所获,
还是自己动手写写吧,你写错了,大家帮你指正。
如果你不写,那你还是不要学习编程了。
nick8867 2004-08-18
  • 打赏
  • 举报
回复
c.re=c1.re*c2.re-c1.im*c2.im;
c.im=c1.re*c2.im+c2.re*c1.im;
谢谢 太感谢拉
socrazylee 2004-08-18
  • 打赏
  • 举报
回复
( a + b i ) / ( c + d i ) = ( a c + b d ) / ( c2 + d2) + [ ( b c – a d ) / ( c2+d2 ) ] i
中的c2 d2是什么?我的复数除法忘记了 你再说一次 我给你做下
nick8867 2004-08-18
  • 打赏
  • 举报
回复
楼上的可以说的清楚点吗?在哪里可以找STL源码
谢谢
freefalcon 2004-08-18
  • 打赏
  • 举报
回复
照着STL源码,自己写一个简化的
不是难事吧?

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧