算法分析与设计的课程设计(一元多项式的加法、减法、乘法的实现).doc
《算法分析与设计的课程设计(一元多项式的加法、减法、乘法的实现).doc》由会员分享,可在线阅读,更多相关《算法分析与设计的课程设计(一元多项式的加法、减法、乘法的实现).doc(18页珍藏版)》请在三一办公上搜索。
1、湖南师范大学电子与信息工程系课程设计报告书一元多项式的加法、减法、乘法的实现2010-09-25Hunan Normal UniversityELECTRONIC & INFORMATION ENGINEERING DEPARTMENT课程设计题目一元多项式的加法、减法、乘法的实现指导教师姓名指导老师职称学生姓名所属班级任务要求1) 首先判定多项式是否稀疏;2) 分别采用顺序和动态存储结构实现;3) 结果M(x)中无重复阶项和无零系数项;4) 要求输出结果的升幂和降幂两种排列情况主要实施步骤1) 9月13日9月14日:分析题目,查阅书籍,理解一元多项式加减乘的思想,对如何实现该题进行一个整体构
2、思;2) 9月15日9月16日:确定实验所用到的数据结构,并给出抽象定义3) 9月17日9月20日:编写各模块的代码,并整合成一个系统4) 9月21日:对程序进行调试与编译5) 9月22日9月24日:美化界面,对部分不合理的地方进行修改6) 9月25日:实验完成,撰写结论结论通过课程设计,基本上完成了老师所要求的功能,但系统还有不足之处,给操作者一个不很直观的操作,希望下一步的完善中,能够改用窗体界面,从而使界面更友好;此次课程设计让我们得到了实践,不再局限于理论的学习之中。湖南师范大学工学院电子与信息工程系课程设计登记表注:此表格内容中的任务要求为指导教师提供的课程设计要求,主要实施步骤是指
3、课程设计的时间安排,结论是指通过课程设计得出的有关结论及课程设计不足之处或进一步开发方向。目 录1引言41.1课程设计目标41.2编程工具(编程环境)介绍51.3实施时间及主要实施步骤52需求分析53系统总体设计64数据结构设计75详细设计与实现95.1功能模块1输入一元多项式详细设计105.1.1详细设计105.1.2界面设计及测试结果105.2功能模块2 创建一元多项式 详细设计105.2.1详细设计105.2.2界面设计及测试结果115.3功能模块3主菜单详细设计115.3.1详细设计115.3.2界面设计及测试结果125.4功能模块4 顺序存储的一元多项式运算 详细设计125.4.1详
4、细设计125.4.2算法流程125.4.3界面设计及测试结果135.5功能模块5顺序存储的一元多项式运算 详细设计135.5.1详细设计135.5.2算法流程135.5.3界面设计及测试结果146 算法分析(5)7 用户手册 .(58 结论 )9 参考文献.10 附录1引言1.1 课程设计目标设计一个一元多项式运算的系统,主要包括:加减乘法的运算。 本文是关于一个一元稀疏多项式计算器的问题。内容包括输入并建立多项式,多项式相加,多项式求导,多项式求值以及输出多项式。本文使用链式存储结构存储一元稀疏多项式,可以方便的计算简单的一元稀疏多项式的基本运算。本课程设计运用所学的一些C+知识,构成整个计
5、算器的形成框架。在程序中定义了各种类型的运算的模块,通过主程序的调用来完成他们之间的配合,进而完善了计算器。1.2 编程工具(编程环境)介绍编程工具:Microsoft Visual C+编程环境:Microsoft Windows xp1.3 实施时间及主要实施步骤l 实施时间: 9月13日至9月25日l 基本步骤大致为: 前期分析 中期编码 后期调试2 需求分析l 本问题描述本实验要求利用带头结点的有序链表实现任意两个一元实系数的加减乘法运算。基本功能要求1首先,根据键盘输入的一元实系数多项式的系数与指数序列,对多项式进行初始化,并按未知数x的升幂形式排序。2对于从键盘输入的任意两个一元多
6、项式,正确计算它们的和,差,积多项式,并输出结果。l 测试数据见Test.txt3 系统总体设计进入界面,系统提示用户输入多项式的指数和系数并选择存储方式。然后出现操作界面,由用户选择相关操作以及按照升幂还是降幂输出。具体实现见流程图: 本程序包括5个模块:1、 输入一元多项式该模块主要是用户根据提示输入一元多项式的指数和系数2、 根据输入创建一元多项式并存储并且判断是否稀疏该模块主要是将输入的一元多项式按顺序存储方式存储,并判断是否稀疏,如果稀疏,则转换为链式方式存储3、 主菜单该模块主要是显示菜单信息,并且由用户显示要进行的步骤4、 顺序存储的一元多项式的加减乘法并输出结果 该模块主要是实
7、现多项式的运算5、 链式存储的一元多项式的加减乘法并输出结果 该模块主要是实现多项式的运算4 数据结构设计本程序主要应用了链表,结构体和类模板。用结构体来定义多项式的结点(即每一项),它包含三个域,分别存放该项的系数、指数以及指向下一项结点的指针;用链表来存储多项式,为了节省空间,只存储多项式中系数非0 的项,用多项式链表类来实现设定的程序的基本功能。为实现上述功能定义一元多项式的抽象数据类型如下:ADT Polynomial数据对象:D=ai |aiTermSet, i=1,2,m, m10,TermSet中的元素包含一个实系数和一个表示指数的整数数据关系:R1= |ai-1,aiD, 且a
8、i-1中的指数值lb?la:lb; for(i=0;i=la&i=lb;i+) M.ai=A.ai+B.ai; /此处若为稀疏式,则会浪费大量时间 while(i=la) M.ai=A.ai;i+; while(ilb?la:lb; for(i=0;i=la&i=lb;i+) M.ai=A.ai-B.ai; while(i=la) M.ai=A.ai;i+; while(i=lb) M.ai=0-B.ai;i+; /B的相反数 print(M); /=/M(x)=A(m)*B(n)/void MUL(polynomial A,polynomial B,polynomial &M) int i,
9、j; for(i=0;i=A.len+B.len+1;i+) M.ai=0; /为什么要多1 for(i=0;i=A.len;i+) for(j=0;jxsPb-xs) ha=Pb; hb=Pa; else ha=Pa; hb=Pb; hc=pc=(Lpolynomial)malloc(sizeof(LNode); qa=ha-next; qb=hb-next; while(qa-next!=NULL)&(qb-next!=NULL) qc=(Lpolynomial)malloc(sizeof(LNode); qc-next=NULL; switch(cmp(qa-expn,qb-expn)
10、case -1: qc-ceof=qa-ceof; qc-expn=qa-expn; pc-next=qc; pc=qc; qa=qa-next; break; case 0: sum=qa-ceof+qb-ceof; if(sum!=0.0) qc-ceof=sum; qc-expn=qa-expn; pc-next=qc; pc=qc; qa=qa-next; qb=qb-next; break; else free(qc); qa=qa-next; qb=qb-next; break; case 1: qc-ceof=qb-ceof; qc-expn=qb-expn; pc-next=q
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 算法 分析 设计 课程设计 一元 多项式 加法 减法 乘法 实现
链接地址:https://www.31ppt.com/p-2541606.html