c一元稀疏多项式计算器课程设计实验报告.docx
《c一元稀疏多项式计算器课程设计实验报告.docx》由会员分享,可在线阅读,更多相关《c一元稀疏多项式计算器课程设计实验报告.docx(26页珍藏版)》请在咨信网上搜索。
1、学号2016-2017学年 第二学期1608220203网络工程课程设计报告题目:一元稀疏多项式计算器专业:网络工程班级:网络工程(3)班姓名:代应豪指导教师:代美丽成绩:一、问题描述3二、 需求分析3三、概要设计4四、详细设计5五、 源代码6六 、程序测试18七、 使用说明24八、 课设总结25一、问题描述1.1基本要求(1)输入并建立多项式;(2)输出多项式,输出形式为整数序列:n,c1,e1, c2,e2, cn,en,其中n是多项式的项数,ci,ei,分别是第i项的系数和指数,序列按指数降序排序;(3)多项式a和b相加,建立多项式a+b;(4)多项式a和b相减,建立多项式a-b;(5)
2、计算多项式在x处的值。(6)计算器的仿真界面。1.2设计目的数据结构是实践性很强的课程。课程设计是加强学生实践能力的一个强有力手段。课程设计要求学生在完成程序设计的同时能够写出比较规范的设计报告。严格实施课程设计这一环节,对于学生基本程序设计素养的培养和软件工作者工作作风的训练,将起到显著的促进作用二、 需求分析2.1 设计开发环境: 软件方面:系统 windows 7 编程软件:VC+ 6.02.2思路分析:一般情况下的一元n次多项式可写成pn(x)=p1xe1+p2xe2+pmxem 其中,p1是指数为ei的项的非零系数,且满足0e1e2em=n ,若用一个长度为m且每个元素有两个数据项(
3、系数项和指数项)的线性表(p1,e1),(p2,e2),(pm,em))便可惟一确定多项式pn(x)。用两个带表头结点的单链表分别存储两个多项式根据一元多项式相加的运算规则:对于两个一元多项式中所有指数相同的项,对应系数相加,若其和不为零,则构成“和多项式”中的一项;只需要将第二个多项式的系数改为其相反数,然后根据一元多项式相加的运算规则便可以得到其相应的“差多项式” 三、概要设计菜单加法AddPolyn(ma,mb)减法SubtractPolyn(ma,mb)乘法MultiplyPolyn(ma,mb)求值ValuePolyn(ma,x)输入Insert(Polyn p,Polyn h)除法
4、DevicePolyn(ma,mb)输出desktop()图3-1功能模块图为实现上述程序功能,用带表头结点的单链表存储多项式。元素类型,节点类型,和指针类型:typedef struct Polynomialint coe; /系数int exp;/指数struct Polynomial *next;*Polyn,Polynomial;各个模块之间的调用如图3-1所示,调用insert()函数将输入的多项式按降幂排列,通过主函数main()中swith语句,选择用户所选择的对应的模块,然后又模块对应的功能函数对用户输入的数据进行相应的操作,最后通过desktop()模块将最后结果输出。四、详
5、细设计开始运行多项式加法计算器退出求积、商求和(差)输入多项式关闭运行多项式相加求和(差)多项式求积、商建立2个多项式输出结果输出求和(差)结果按任意键退出图4-1 功能实现流程图4.1 输入模块用户可通过本模块来输入一个多项式,在每次输入一个多项式时,本模块会先判断谁否是第一次输入,如果是,创建节点,如果不是则模块会通过判断本次输入的数的指数与第一项输入的指数的大小,如果第一项的指数较大,则刚输入的这一项继续与第二项比较指数,以此类推,如果发现刚输入的这一项的指数比比较的这一项的指数要大,则插入比较项的前面。4.2 求和、差模块用户通过本模块可以实现两个多项式的求和或差值,此模块先调用输入模
6、块,进行对两个要运算的多项式进行初始化,并按降幂排列。然后将两个多项式的幂进行一个对比,如果第一个数的第一项的系数大于第二个多项式的第一个项的系数,那么直接将第一项赋值于刚开始创建的链表的第一项,作为答案的最后一项,反之亦然,如果第一个数的第一项,与第二个数的第一项的系数相同,那么将两个数的系数与指数分别相加或者相减并将对应值赋值给答案相对应的项。以此类推。最后有输出模块输出最后答案。4.3求积、商模块用户可通过该模块实现两个多项式的相乘(相除),此模块先调用输入模块,进行对两个要运算的多项式的初始化,并按降幂排列。然后将第一个数的系数、指数与第二个数的系数、指数分别相乘(相除),相加(相减)
7、,并且赋值给答案相应的系数、指数。完成后执行第一个数的第一项与第二个数的第二项进行相应的操作.执行完之后最后调用输出模块将结果输出到屏幕上。4.4求值模块用户可通过此模块实现多项式的求值,此模块调用输入模块,完成相对应的操作,然后需要用户输入此时变量的值,并且将变量的值赋值给变量,最后将答案通过输出模块输出到屏幕上。五、 源代码 #include#include #include typedef struct Polynomialint coe; /系数int exp;/指数struct Polynomial *next;*Polyn,Polynomial; Polyn ma,mb;void
8、Insert(Polyn p,Polyn h) if(p-coe=0) delete p; elsePolyn q1,q2;q1=h;q2=h-next;while(q2&p-expexp) q1=q2;q2=q2-next;if(q2&p-exp=q2-exp) q2-coe+=p-coe;delete p;if(!q2-coe) q1-next=q2-next;delete q2;else p-next=q2;q1-next=p;Polyn CreatePolyn(Polyn head,int m)int i;Polyn p;p=head=new Polynomial;head-next=
9、NULL;for(i=0;im;i+)p=new Polynomial;cout请输入第i+1p-coe;coutp-exp;Insert(p,head);return head;void DestroyPolyn(Polyn p)Polyn t;while(p!=NULL)t=p;p=p-next;delete t;void PrintPolyn(Polyn Pm) Polyn qa=Pm-next; int flag=1;if(!qa) cout0; coutcoe0&flag!=1) coutcoe!=1&qa-coe!=-1)coutcoe; if(qa-exp=1) coutexp)
10、 coutXexp;elseif(qa-coe=1)if(!qa-exp) coutexp=1) coutX;else coutXexp;if(qa-coe=-1)if(!qa-exp) coutexp=1) cout-X; else cout-Xexp;qa=qa-next; flag+;coutexpb-exp) return 1;else if(!a|a-expexp) return -1;else return 0;else if(!a&b) return -1;else return 1;Polyn AddPolyn(Polyn pa,Polyn pb)Polyn qa=pa-nex
11、t;Polyn qb=pb-next;Polyn headc,hc,qc;hc=new Polynomial;hc-next=NULL;headc=hc;while(qa|qb)qc=new Polynomial;switch(compare(qa,qb)case 1:qc-coe=qa-coe;qc-exp=qa-exp;qa=qa-next;break;case 0: qc-coe=qa-coe+qb-coe;qc-exp=qa-exp;qa=qa-next;qb=qb-next;break;case -1:qc-coe=qb-coe;qc-exp=qb-exp;qb=qb-next;br
12、eak; if(qc-coe!=0)qc-next=hc-next;hc-next=qc;hc=qc;else delete qc;return headc;Polyn SubtractPolyn(Polyn pa,Polyn pb)Polyn h=pb;Polyn p=pb-next;Polyn pd;while(p) p-coe*=-1;p=p-next;pd=AddPolyn(pa,h);for(p=h-next;p;p=p-next) p-coe*=-1;return pd;Polyn MultiplyPolyn(Polyn pa,Polyn pb)Polyn hf,pf;/Polyn
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 一元 稀疏 多项式 计算器 课程设计 实验 报告
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【精****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【精****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。