复数计算器实验报告

上传人:re****.1 文档编号:552566147 上传时间:2023-07-08 格式:DOC 页数:11 大小:441.50KB
返回 下载 相关 举报
复数计算器实验报告_第1页
第1页 / 共11页
复数计算器实验报告_第2页
第2页 / 共11页
复数计算器实验报告_第3页
第3页 / 共11页
复数计算器实验报告_第4页
第4页 / 共11页
复数计算器实验报告_第5页
第5页 / 共11页
点击查看更多>>
资源描述

《复数计算器实验报告》由会员分享,可在线阅读,更多相关《复数计算器实验报告(11页珍藏版)》请在金锄头文库上搜索。

1、云南大学软件学院 数据结构实验报告 (本实验项目方案受“教育部人才培养模式创新实验区(X3108005)”项目资助) 实验难度: A B C 序号学号姓名成绩120131120009刘宇晗220131120011付玉然3指导教师 (签名)学期:2014秋季学期 任课教师: 杨云 秦江龙 实验题目:抽象数据类型的设计与实现小 组 长: 联系电话: 18487202254 电子邮件: 完成提交时间:2014年 9月 28日云南大学软件学院2010学年 秋季 学期数据结构实验成绩考核表学号: 20131120009 姓名: 刘宇晗 本人承担角色: 评分项目评分指标分值得分实验构思(10%)1. 实

2、验目的明确52. 实验内容理解透彻、对实验所涉及到的知识点分析到位5实验设计(15%)1. 有对基本数据结构的抽象数据类型定义52. 实验方案设计完整,数据结构、算法选择合理 53.算法结构和程序功能模块之间逻辑清晰、有相应的流程图5实验实现(25%)1. 代码编写规范、风格统一、注释清楚易读 52. 程序运行正常,测试结果正确153. 界面友好、易于操作、有较强的容错性5实验报告撰写(10%)1. 内容详实无缺漏,文字流畅、图表清楚52. 实验结果分析客观、详细,实验体会真实可信,对原实验方案的改进和对实验内容的发散性思考5个人工作量(30%)1. 个人完成工作量152. 个人技术水平103

3、. 团队合作精神5实验运作(10%)1. 有一定用户群52. 应用前景分析5综合得分: (满分100分)指导教师: 年 月 日(注:此表在难度为C时使用,每个成员一份。)一、【实验构思(Conceive)】(10%)(本部分应包括:描述实验实现的基本思路,包括所用到的离散数学、工程数学、程序设计、算法等相关知识)1,复数的运算公式:设 z1=a + bi,z2=c + di,(a,b,c,dR,以下不再说明) 加减法:(a + bi)(c + di)=(a c )+(b d)i 乘法:(a + bi)*(c + di)=(ac - bd)+(ad + bc)i 除法:(a+bi)/(c+di)

4、=(a+bi)(c-di)/c2+d2=(ac+bd)(bc-ad)i/c2+d22,算法构思:(1) 将实部与虚部分开计算,这样可以简化计算过程,使操作的窗体界面更加易于应用,用户便于理解。(2) 定义了四个名为“cpxNum1,cpxNum2,cpxNum3,cpxNum4”的结构体类型,结构体中包含实部real和虚部Image两部分。(3) 根据复数运算的公式,设计加、减、乘、除的函数,通过函数调用,计算出最后的结果,并使结果显示在窗体中。3,算法难点及分析:(1) 计算器不应当只能进行单位数的运算,当输入一个多位数时,计算器也通昂可以运算并输出结果,关键在于多位数的输入问题的程序编写。

5、(2) 计算器在输入实部与虚部时,在输入栏的切换问题,关键是if条件语句的判断textBox中的内容是否为空。二、【实验设计(Design)】(20%)(本部分应包括:抽象数据类型的功能规格说明、主程序模块、各子程序模块的伪码说明,主程序模块与各子程序模块间的调用关系)1,抽象数据类型的功能规格说明:定义结构体:typedef struct double real; /复数的实部double image; /复数的虚部cpxNum1; /定义结构体类型cpxNum表示“复数”结构体中成员有两个,一个是复数的实部,一个是复数的虚部,数据类型均为double.它把复数的实部和虚部联合成一个整体,方

6、便程序的后续处理。2,主程序模块:void assign(cpxNum2& c, double r2, double i2)c.real=r2;c.image=i2;cpxNum2 cminus(const cpxNum2& c1, const cpxNum2& c2) /此函数为复数减法 cpxNum2 result;result.real=c1.real-c2.real;result.image=c1.image-c2.image;return result;void assign(cpxNum1& c, double r1, double i1)c.real=r1;c.image=i1;

7、cpxNum1 cplus(const cpxNum1& c1, const cpxNum1& c2) /此函数为复数加法cpxNum1 result;result.real=c1.real+c2.real;result.image=c1.image+c2.image;return result;void assign(cpxNum3& c, double r3, double i3)c.real=r3;c.image=i3;cpxNum3 cmultiply(const cpxNum3& c1, const cpxNum3& c2) /此函数为复数乘法cpxNum3 result;resul

8、t.real=c1.real*c2.real-c1.image*c2.image;result.image=c1.real*c2.image+c1.image*c2.real;return result;void assign(cpxNum4& c, double r4, double i4)c.real=r4;c.image=i4;cpxNum4 cdivide(const cpxNum4& c1, const cpxNum4& c2) /此函数为复数除法cpxNum4 result;result.real=0;result.image=(c1.real*c2.real+c1.image*c

9、2.image)*(c1.image*c2.real-c1.real*c2.image)/(c2.real*c2.real+c2.image*c2.image);return result;3,子程序模块:void assign(cpxNum1& c, double r1, double i1);cpxNum1 cplus(const cpxNum1& c1, const cpxNum1& c2);/此函数为复数加法void assign(cpxNum2& c, double r2, double i2);cpxNum2 cminus(const cpxNum2& c1, const cpxN

10、um2& c2);/此函数为复数减法void assign(cpxNum3& c, double r3, double i3);cpxNum3 cmultiply(const cpxNum3& c1, const cpxNum3& c2);/此函数为复数乘法void assign(cpxNum4& c, double r4, double i4);cpxNum4 cdivide(const cpxNum4& c1, const cpxNum4& c2);/此函数为复数除法三、【实现描述(Implement)】(30%)(本部分应包括:抽象数据类型具体实现的函数原型说明、 关键操作实现的伪码算法

11、、 函数设计、函数间的调用关系,关键的程序流程图等,给出关键算法的时间复杂度分析。)1,抽象数据类型具体实现的函数原型说明:cpxNum1 cplus(const cpxNum1& c1, const cpxNum1& c2)/此函数为复数加法cpxNum1 result;result.real=c1.real+c2.real;result.image=c1.image+c2.image;return result; cpxNum2 cminus(const cpxNum2& c1, const cpxNum2& c2)/此函数为复数减法cpxNum2 result;result.real=c

12、1.real-c2.real;result.image=c1.image-c2.image;return result;cpxNum3 cmultiply(const cpxNum3& c1, const cpxNum3& c2)/此函数为复数乘法cpxNum3 result;result.real=c1.real*c2.real-c1.image*c2.image;result.image=c1.real*c2.image+c1.image*c2.real;return result;cpxNum4 cdivide(const cpxNum4& c1, const cpxNum4& c2)/

13、此函数为复数除法cpxNum4 result;result.real=0;result.image=(c1.real*c2.real+c1.image*c2.image)*(c1.image*c2.real-c1.real*c2.image)/(c2.real*c2.real+c2.image*c2.image);return result;该算法的时间复杂度为:O(1)。2,关键操作实现的伪码算法:单击事件代码:(1)输入数据及输出结果算法实现:(以减法运算符号的代码为例)cpxNum2 c1,c2,result;/减法运算符单击操作时执行的代码 double real1=System:Convert:ToDouble(this-textBox1-Text);/输入第一个复数的实部 double image1=System:Convert:ToDouble(this-textBox2-Text); /输入第一个复数的虚部 double real2=System:Convert:ToDouble(this-textBox3-Text); /输入第二个复数的实部 double image2=System:Convert:ToDouble(this-textBox4-Text); /输入第二个复数的虚部 assign(c1,real1,ima

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号