欢迎来到天天文库
浏览记录
ID:47644545
大小:97.83 KB
页数:14页
时间:2019-08-26
《实验一一元多项式运算》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、实验一一元多项式的运算班级:计算机1405组别:4姓名:刘诚阳学号:201437121・问题定义及需求分析1・1课题目的和任务问题描述:设计一个一元多项式简单计算器。实验要求:1)采用顺序表或链表等数据结构。2)输入并建立多项式。3)输出运算结果的多项式。1・2数据形式输入数据形式:通过键盘输入。输入值的范围:多项式的项数和指数的输入数据为int型,输入值范围为-32768至32767;多项式系数的输入值范围为float型,范圉为1.2e-38至3.4e+38o输出数据形式:输出到显示器。1.3程序功能实现两个一元多项式Z间的加法、减
2、法和乘法运算。1.4测试数据4//笫一个多项式的项数14//第一项的系数和指数33//第二项的系数和指数-22//第三项的系数和指数60//第四项的系数和指数5//笫二个多项式的项数-35//第一项的系数和指数22//第二项的系数和指数-60//第三项的系数和指数-1-1//第四项的系数和指数1.2-2//第五项的系数和指数2.概要设计2.1抽象数据类型需要定义一个多项式类型的数据类型,里面包含一个int型的指数和一个float型的系数,再定义一个多项式节点,里而包含一个多项式类型的数据,和一个指向下一个节点的指针。通过对多项式节点的
3、操作,实现对输入数据的运算。2.2主程序流程及各模块之间的调用关系2.详细设计3.1存储结构实现多项式结构体:typedefstruct{floatcoef;intexpn;}Poly;typedefstructLNode{Polydata;structLNode*next;}LNode,*LinkList;多项式类型的定义:typedefLinkListpolynomial;1.2负责模块的伪码算法(1)intMuitipiyPolyn(polynomial&a,polynomial&b){//多项式相乘if(a,b中均没有项){r
4、eturn0;}c=(polynomial)malloc(sizeof(LNode));//开辟一个c储存相乘结果c—>next二NULL;ha二a一〉next;//ha为a中的项hb=b->next;//hb为b中的项for(;hb不空;卜'一项){//将3中第一项与b中所有项相乘ha的系数*hb的系数;ha的指数*hb的指数;开辟一个新节点E,将数据存入,并把E连到c后}Sort(c);//对c中多项式排序ha=ha->next;//ha指向卜一个项while(ha!=NULL){//将a中第二项与b中所有项相乘,存入d,然后将c
5、和d相加得到新的c,再以此对a屮其余各项做相同操作,最终得到乘法运算后的chb=b->ncxt;//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指向.F一项AddPolyn(c,d);//将c,d相加得到新的c}t=a;a
6、二c;//a指向运算结果DcstroyPolyn(b);〃销毁初始的两个多项式DestroyPolyn(t);}(1)voidDestroyPolyn(polynomial&L){//销毁多项式wh订e(L!=NULL){P=L;L=L->next;//指向后一项free(p);}}(2)voidSort(polynomial&L){//对多项式的指数进行冒泡排序for(多项式长度){for(j二L;j->next->next!二NULL;j二j->next){if(j->next指数next->next指数){//将大的冒到
7、前面p=j_〉next;q二j-〉next-〉next;p->next=q->next;q_>next二p;j->next=q;}}}}1.调试分析2.1问题分析与解决方法(1)多项式相乘对于多项式相乘,考虑到两个一元多项式的相乘,可以利用两个一元多项式相加的算法来实现,因为乘法运算可以分解为一系列的加法运算,所以只需循环执行加法运算,就可以完成多项式的相乘。例如A(x)和B(x)为一元多项式,则有:M(兀)=A(x)x=A(兀)x[仪兀勺+b2xe'+・••+bnxen/=1其中,每一项都是一个一元多项式。(2)销毁多项式销毁多项式
8、只需要判断多项式中的项是否为空,不为空就将指针后移,然后释放刚才的储存空间,当为空时结束循环。(3)对多项式各项进行排序通过冒泡排序实现多现实齐项的指数的排序,冒泡排序的实现过程为:多项式屮冇多少项就进行多少次的排序,第
此文档下载收益归作者所有