资源描述:
《C23_复数的定义-表示和实现-C语言程序.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、《数据结构》作业一抽象数据类型—复数的定义、表示及其实现1.抽象数据类型复数的定义:ADTComplex{数据对象:D={a,ba,bÎR,R为实数集}数据关系:S={a为复数实部,b为复数虚部}基本操你:Complex(&z,a=0,b=0)操作结果:构造复数z,其实部和虚部分别为a和b,不带参数时自动取0。GetReal(x)初始条件:复数x已存在;操作结果:返回z的实部。GetImag(x)初始条件:复数x已存在;操作结果:返回z的虚部。Add(&z,x,y)初始条件:复数x,y已存在;操作结果:将x与y的和存入z。Sub(&z,x,y)初始条件:复数
2、x,y已存在;操作结果:将x与y的差存入z。Mul(&z,x,y)初始条件:复数x,y已存在;操作结果:将x与y的积存入z。Div(&z,x,y)初始条件:复数x,y已存在;操作结果:将x与y的商存入z。Pow(&z,x,n)初始条件:复数x已存在;操作结果:将x的n次方存入z,n为非负整数。Pow(&z,x,a)初始条件:复数x已存在;操作结果:将x的乘a次幂存入z,a为实数。Abs(x)初始条件:复数x已存在;操作结果:返回复数x的模。ComplexAng(x)初始条件:复数x已存在;操作结果:返回复数x的幅角。PrintImage(x)初始条件:复数x已存在;操
3、作结果:以“bi”的形式显示复数x的虚部。ErrorExit(str)初始条件:str为字串常量;操作结果:遇到非法时(比如分母为0时)强形退出程序。Print(x)初始条件:复数x已存在;操作结果:以“a+bi”的形式显示复数x。}ADTComplex1.抽象数据类型复数的表示与实现:#include//getch#include//cout#include//sqrt,powusingnamespacestd;//std命名空间#defineeps1.0e-10//考虚计算精度#definePI3.1415926
4、536//圆周率classComplex{//复数类的定义private://私有变量:存取只能通过成员函数doubler,i;public://公有变量:可通过成员运算符存取Complex(Complex&z,doublex=0,doubley=0)//构造函数:初始化{z.r=x;z.i=y;}doubleGetReal(Complexx){returnx.r;}//取实部doubleGetImag(Complexx){returnx.i;}//取虚部voidAdd(Complex&x,Complexc1,Complexc2)//复数相加{x.r=c1.r+c2.
5、r;x.i=c1.i+c2.i;}voidSub(Complex&x,Complexc1,Complexc2)//复数相减{x.r=c1.r-c2.r;x.i=c1.i-c2.i;}voidMul(Complex&x,Complexc1,Complexc2)//复数相乘{x.r=c1.rc2.r-c1.ic2.i;x.i=c1.rc2.i+c1.ic2.r;}doubleAbs(Complexx)//复数求模{returnsqrt(x.rx.r+x.ix.i);}voidErrorExit(chars)//程序意外终止{cout<
6、//等待按任意键exit(0);//终止程序}voidDiv(Complex&x,Complexa,Complexb)//求数除法a/b{doublet;if(Abs(b)7、seif(fabs(x.r)0)a=(double)PI/2;elsea=-(double)PI/2;}else{a=atan(x.i/x.r);if(a>0&&x.r<0)a=PI+a;//同号:三象限if(a<0&&x.r<0)a=PI+a;//异号:二象限}returna;}voidPow(Complex&x,Complexy,doublen)//幂运算:实数幂{doubler,a;if(n==0)x.i=0,x.r=1;//定义0的0次幂为1else{if(Abs(y)