复数计算器实验报告

上传人:熏** 文档编号:52779398 上传时间:2022-02-09 格式:DOC 页数:11 大小:441.50KB
返回 下载 相关 举报
复数计算器实验报告_第1页
第1页 / 共11页
复数计算器实验报告_第2页
第2页 / 共11页
复数计算器实验报告_第3页
第3页 / 共11页
点击查看更多>>
资源描述
云南大学软件学院 数据结构实验报告 (本实验项目方案受“教育部人才培养模式创新实验区(X3108005)”项目资助) 实验难度: A B C 序号学号姓名成绩120131120009刘宇晗220131120011付玉然3指导教师 (签名)学期:2014秋季学期 任课教师: 杨云 秦江龙 实验题目:抽象数据类型的设计与实现小 组 长: 联系电话: 18487202254 电子邮件: 2635630110 完成提交时间:2014年 9月 28日云南大学软件学院2010学年 秋季 学期数据结构实验成绩考核表学号: 20131120009 姓名: 刘宇晗 本人承担角色: 评分项目评分指标分值得分实验构思(10%)1. 实验目的明确52. 实验内容理解透彻、对实验所涉及到的知识点分析到位5实验设计(15%)1. 有对基本数据结构的抽象数据类型定义52. 实验方案设计完整,数据结构、算法选择合理 53.算法结构和程序功能模块之间逻辑清晰、有相应的流程图5实验实现(25%)1. 代码编写规范、风格统一、注释清楚易读 52. 程序运行正常,测试结果正确153. 界面友好、易于操作、有较强的容错性5实验报告撰写(10%)1. 内容详实无缺漏,文字流畅、图表清楚52. 实验结果分析客观、详细,实验体会真实可信,对原实验方案的改进和对实验内容的发散性思考5个人工作量(30%)1. 个人完成工作量152. 个人技术水平103. 团队合作精神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)=(a+bi)(c-di)/c2+d2=(ac+bd)(bc-ad)i/c2+d22,算法构思:(1) 将实部与虚部分开计算,这样可以简化计算过程,使操作的窗体界面更加易于应用,用户便于理解。(2) 定义了四个名为“cpxNum1,cpxNum2,cpxNum3,cpxNum4”的结构体类型,结构体中包含实部real和虚部Image两部分。(3) 根据复数运算的公式,设计加、减、乘、除的函数,通过函数调用,计算出最后的结果,并使结果显示在窗体中。3,算法难点及分析:(1) 计算器不应当只能进行单位数的运算,当输入一个多位数时,计算器也通昂可以运算并输出结果,关键在于多位数的输入问题的程序编写。(2) 计算器在输入实部与虚部时,在输入栏的切换问题,关键是if条件语句的判断textBox中的内容是否为空。二、【实验设计(Design)】(20%)(本部分应包括:抽象数据类型的功能规格说明、主程序模块、各子程序模块的伪码说明,主程序模块与各子程序模块间的调用关系)1,抽象数据类型的功能规格说明:定义结构体:typedef struct double real; /复数的实部double image; /复数的虚部cpxNum1; /定义结构体类型cpxNum表示“复数”结构体中成员有两个,一个是复数的实部,一个是复数的虚部,数据类型均为double.它把复数的实部和虚部联合成一个整体,方便程序的后续处理。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;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;result.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*c2.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 cpxNum2& 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%)(本部分应包括:抽象数据类型具体实现的函数原型说明、 关键操作实现的伪码算法、 函数设计、函数间的调用关系,关键的程序流程图等,给出关键算法的时间复杂度分析。)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=c1.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)/此函数为复数除法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,image1); assign(c2,real2,image2); result=cminus(c1,c2);/执行减法运算,输出结果 this-textBox1-Text=result.real.ToString();/输出结果复数的实部 this-textBox2-Text=result.image.ToString();/输出结果复数的虚部该算法的时间复杂度为:O(1)。(2)由一个输入框转移到下一个输入框中的算法实现:if(textBox2-Text=)/判断输入框中是否为空str1=this-button5-Text;/输入框为空时,输入点击的数字 this-textBox1-Text+=str1;/输入多位数的代码else str1=this-button5-Text;/输入框不空时,点击的数字转移到下一个输入框中 this-textBox3-Text+=str1;该算法的时间复杂度为:O(1)。(3) 删除键算法实现:this-textBox3-Text= ;/令输入框为空 this-textBox4-Text= ; 该算法的时间复杂度为:O(1)。四、【测试结果(Testing)】(10%)(本部分应包括:对实验的测试结果,应具体列出每次测试所输入的数据以及输出的数据,并对测试结果进行分析总结)1, 实验的测试结果:(1)输入第一复数为:145+568i;第二个复数为:23+47i;执行加法运算。结果相加为:168+615i;显示在第一行的实部1,虚部1栏中。(2)输入第一复数为:15+25i;第二个复数为:78+10i;执行减法运算。结果相减为:-63+15i;显示在第一行的实部1,虚部1栏中。(3)输入第一复数为:14+5i;第二个复数为:70+16i;执行乘法运算。结果相乘为:900+574i;显示在第一行的实部1,虚部1栏中。(4) 输入第一复数为:47+23i;第二个复数为:12+48i;执行除法运算。结果相除为:-1349.11764 i;显示在第一行的实部1,虚部1栏中。2,分析总结:实验结果显示方面应该确定保留几位小数,计算器只能进行正整数运算,还需要改进,使之能进行小数和复数的运算。四、【实验总结】(10%)(本部分应包括:自己在实验中完成的任务,注意组内的任意一位同学都必须独立完成至少一项接口的实现;对所完成实验的经验总结、心得)(1)实验中的任务:主程序和声明程序的部分编写和按钮单击事件的编写,输入时转移输入框编写。(2)总结与心得:本次实验,通过对复数计算器的编写,对抽象数据类型的表示和实现方法有了更深的理解。使我在复习了c语言的同时,还利用高级程序设计语言中已存在的数据类型来说明新的结构,用已经实现的操作来组合新的操作。在实验过程中,和同学相互合作,化解困难最终成功写出了程序。除外,还让我意识到自己更多的不足之处,程序设计方面的诸多纰漏之处,并努力使之加以改进。实验也有遇到难题无解时:如多位数的输入问题的程序编写。计算器在输入实部与虚部时,在输入栏的切换问题等。但通过我们小组两人的分析努力,都化解了难题。 学习数据结构,使我的代码写的更加的规范,对C的了解也更加的深入,同时也是我自学了很多东西,收获颇丰!五、【项目运作描述(Operate)】(10%)(本部分应包括:项目的成本效益分析,应用效果等的分析。)(1) 用户群:大多数的学生包括中小学,高中生以及大学生。(2) 应用前景分析:当今社会,学生特别是中小学生的家庭作业颇多,为孩子带来了很多的压力,鉴于如今社会经济科技发达的21世纪,电子产业的高速发展,使得学生的越来越来与思考而依赖于计算器的帮助 。(3) 成本效益分析:可以制成学生用计算器,好可以安装应用于安卓系统上,便于应用,成本不算高,但效益却很大。(4) 应用效果:复数的运算器在可执行实数范围还不大,在界面的简单和人性化方面还有欠缺。但是实部和虚部分开算是操作更加简便直白。
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 商业管理 > 营销创新


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!