实验一-一元多项式运算.docx

  1. 1、本文档共14页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验一 一元多项式的运算问题定义及需求分析1.1课题目的和任务问题描述:设计一个一元多项式简单计算器。实验要求:1)采用顺序表或链表等数据结构。2)输入并建立多项式。3)输出运算结果的多项式。1.2数据形式输入数据形式:通过键盘输入。输入值的范围:多项式的项数和指数的输入数据为int型,输入值范围为-32768至32767;多项式系数的输入值范围为float型,范围为1.2e-38至3.4e+38。输出数据形式:输出到显示器。1.3程序功能实现两个一元多项式之间的加法、减法和乘法运算。1.4测试数据4 //第一个多项式的项数1 4 //第一项的系数和指数3 3 //第二项的系数和指数-2 2 //第三项的系数和指数6 0 //第四项的系数和指数5 //第二个多项式的项数-3 5 //第一项的系数和指数2 2 //第二项的系数和指数-6 0 //第三项的系数和指数-1 -1 //第四项的系数和指数1.2 -2 //第五项的系数和指数概要设计2.1抽象数据类型需要定义一个多项式类型的数据类型,里面包含一个int型的指数和一个float型的系数,再定义一个多项式节点,里面包含一个多项式类型的数据,和一个指向下一个节点的指针。通过对多项式节点的操作,实现对输入数据的运算。2.2主程序流程及各模块之间的调用关系详细设计3.1存储结构实现多项式结构体:typedef struct{ float coef; int expn;}Poly;typedef struct LNode{ Poly data; struct LNode* next;}LNode,*LinkList;多项式类型的定义:typedef LinkList polynomial;3.2负责模块的伪码算法(1)int MultiplyPolyn(polynomial a,polynomial b){//多项式相乘 if(a,b中均没有项){return 0;} c=(polynomial)malloc(sizeof(LNode));//开辟一个c储存相乘结果 c-next=NULL; ha=a-next;//ha为a中的项 hb=b-next;//hb为b中的项 for(;hb不空;下一项){//将a中第一项与b中所有项相乘 ha的系数*hb的系数; ha的指数*hb的指数; 开辟一个新节点E,将数据存入,并把E连到c后 } Sort(c);//对c中多项式排序 ha=ha-next;//ha指向下一个项 while(ha!=NULL){//将a中第二项与b中所有项相乘,存入d,然后将c和d相加得到新的c,再以此对a中其余各项做相同操作,最终得到乘法运算后的c hb=b-next;//hb为b的第一项 d=(polynomial)malloc(sizeof(LNode));//开辟一个d储存相乘结果 d-next=NULL; for(;hb不空;下一项){//将a中第一项与b中所有项相乘 ha的系数*hb的系数; ha的指数*hb的指数; 开辟一个新节点E,将数据存入,并把E连到d后; } Sort(d);//对d中多项式排序 ha=ha-next;//ha指向下一项 AddPolyn(c,d);//将c,d相加得到新的c } t=a; a=c;//a指向运算结果 DestroyPolyn(b);//销毁初始的两个多项式 DestroyPolyn(t);}(2)void DestroyPolyn(polynomial L){//销毁多项式 while(L!=NULL){ p=L; L=L-next;//指向后一项 free(p); }} (3)void Sort(polynomial L){//对多项式的指数进行冒泡排序 for(多项式长度){ for(j=L;j-next-next!=NULL;j=j-next){ if(j-next指数 j-next-next指数){//将大的冒到前面 p=j-next; q=j-next-next; p-next=q-next; q-next=p; j-next=q; } } }}调试分析4.1问题分析与解决方法(1)多项式相乘对于多项式相乘,考虑到两个一元多项式的相乘,可以利用两个一元多项式相加的算法来实现,因为乘法运算可以分解为一系列的加法运算,所以只需循环执行加法运算,就可以完成多项式的相乘。例如A(x)和B(x)为一元多项式,则有:其中,每一项都是一个一元多项式。(2)销毁多项式销毁多项式只需要判断多项式中的项是否为空,不

文档评论(0)

ze122230743 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档