付费下载
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
.《数据结构》作业一抽象数据类型—复数的定义、表示及其实现抽象数据类型复数的定义:ADTComplex{数据对象:D={a,b|a,b R,R为实数集}数据关系:S={<a,b>|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)初始条件:复数 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已存在;操作结果:以“ bi”的形式显示复数 x的虚部。ErrorExit(str)..初始条件:str 为字串常量;操作结果:遇到非法时 (比如分母为 0时)强形退出程序。Print(x)初始条件:复数 x已存在;操作结果:以“ a+bi”的形式显示复数 x。}ADTComplex2.抽象数据类型复数的表示与实现:#include<conio.h> //getch#include<iostream> //cout#include<cmath> //sqrt,powusingnamespacestd; //std 命名空间#defineeps1.0e-10 //考虚计算精度#definePI3.1415926536 //圆周率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.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) //复数相乘{}doubleAbs(Complexx) //复数求模..{}voidErrorExit(char*s) //程序意外终止{cout<<s; //给出错误信息getch(); //等待按任意键exit(0); //终止程序}voidDiv(Complex&x,Complexa,Complexb) //求数除法 a/b{doublet;if(Abs(b)<eps) //若分母为 0ErrorExit("\nDividedbyzero!"); //终止程序}doubleComplexAng(Complexx) //求复角{doubler,a; //模与幅角if(r<eps)a=0; //实-虚皆0elseif(fabs(x.r)<eps){ //实部为0if(x.i>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)<eps) //模为0if(n<0)ErrorExit("\n 分母为0!");//0 负幂无意义..elsex.r=0,x.i=0;//0的正幂为0else{a=ComplexAng(y);//求辐角r=Abs(y);//求模x.r=pow(r,n)*cos(n*a);x.i=pow(r,n)*sin(n*a);r=Abs(x);if(fabs(x.r/r)<eps)x.r=0;//处理无穷小量if(fabs(x.i/r)<eps)x.i=0;}}}voidPow(Complex&x,Complexa,unsignedn)//重载Pow函数:乘方{x.r=1,x.i=0;if(n==0)return;//0次幂为1for(inti=0;i<n;i++)Mul(x,x,a);}voidPrintImag(Complexx)//输出虚部{if(x.i==1)cout<<"i"<<endl;elseif(x.i==-1)cout<<"-i"<<endl;elsecout<<x.i<<"i"<<endl;}voidPrint(Complexx)//输出整个复数{if(x.i&&x.r){//实部虚部都不为0cout<<x.r;if(x.i>=0)cout<<"+";PrintImag(x);}elseif(x.i==0&&x.r==0)cout<<"0"<<endl;//实部虚部都为0elseif(x.i==0)cout<<x.r<<endl;//虚部为0elsePrintImag(x);//实部为0}};//类定义完毕3.程序测试部分voidmain(){ComplexC,C1(1,1),C2(1,1); //C初始化(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年初级焊工理论考试题及答案
- 2026年初级电工职业道德考试试卷及答案
- 2026年初级电工接地电阻基础认知考试试卷及答案
- 2026年初级电工电机启停故障基础处理考试试卷及答案
- 2026年农业专项资金绩效监控考试题及答案解析
- 2026年初级电工按钮开关基础检修考试试卷及答案
- 2026年地方志编纂管理考试题及答案解析
- 2026年足浴服务行业投资规划建议报告及未来五至十年存量博弈与增量突破
- 2026年工业设计服务行业市场调研报告及未来五至十年投资机会分析
- 2026重庆物流集团有限公司招聘1人笔试参考题库及答案解析
- 中煤电力社会招录笔试试题2026
- 2026年初级会计资格考试《初级会计实务》真题+答案解析
- 高校外籍留学生管理安全培训
- 高三思想政治教学设计:必修四哲学原理举例说明的情境关联词教学实践
- 2025年全国广播电视技术能手(调频与电视广播组)完整题库及答案解析
- 2025云南省农村信用社公开选聘县级行社高级管理人员笔试历年典型考题及考点剖析附带答案详解
- 安徽省合肥市普通高中六校联盟2025-2026学年高一上学期11月期中考试政治试卷(含答案)
- 海克斯康三坐标培训课件
- 2026年高考语文备考之文言实词100道选择题(一)(含答案与解析)
- 2024人教版八年级英语上册Unit 1-8各单元重点短语清单(附汉译英+英译汉默写表)
- 盗窃罪课件教学课件
评论
0/150
提交评论