欢迎来到天天文库
浏览记录
ID:62506235
大小:64.99 KB
页数:13页
时间:2021-05-10
《实验一一元多项式运算.docx》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、实验一一元多项式的运算1.问题定义及需求分析1.1课题目的和任务问题描述:设计一个一元多项式简单计算器。实验要求:1)采用顺序表或链表等数据结构。2)输入并建立多项式。3)输出运算结果的多项式。1.2数据形式输入数据形式:通过键盘输入。输入值的范围:多项式的项数和指数的输入数据为int型,输入值范围为-32768至32767;多项式系数的输入值范围为float型,范围为1.2e-38至3.4e+38。输出数据形式:输出到显示器。1.3程序功能实现两个一元多项式之间的加法、减法和乘法运算。1.4测试数据4//第一个多项式的项数14//第一项的系数和指数33//第二项的系数和指数-22
2、//第三项的系数和指数60//第四项的系数和指数5//第二个多项式的项数-35//第一项的系数和指数22//第二项的系数和指数-60//第三项的系数和指数-1-1//第四项的系数和指数1.2-2//第五项的系数和指数2.概要设计2.1抽象数据类型需要定义一个多项式类型的数据类型,里面包含一个int型的指数和一个float型的系数,再定义一个多项式节点,里面包含一个多项式类型的数据,和一个指向下一个节点的指针。通过对多项式节点的操作,实现对输入数据的运算。开始1加法运算3乘法运算结束输出运算后的多项式PrintPolyn()2.2主程序流程及各模块之间的调用关系输出第一个多项式Pri
3、ntPolyn()输入第一个多项式的项数1创建多项式CreatPolyn()1r输出第一个多项式PrintPolyn()1r创建多项式CreatPolyn()输入第二个多项式的项数V12减法运算1选择操作加法运算AddPolyn()减法运算SubtractPolyn()乘法运算MultiplyPolyn()1.详细设计1.1存储结构实现多项式结构体:typedefstruct{floatcoef;intexpn;}Poly;typedefstructLNode{Polydata;structLNode*next;}LNode,*LinkList;多项式类型的定义:typedefLi
4、nkListpolynomial;1.2负责模块的伪码算法1)intMultiplyPolyn(polynomial&a,polynomial&b){//多项式相乘if(a,b中均没有项){return0;}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);//
5、对c中多项式排序ha=ha->next;//ha指向下一个项while(ha!=NULL){〃将a中第二项与b中所有项相乘,存入d,然后将c和d相加得到新的c,再以此对a中其余各项做相同操作,最终得到乘法运算后的chb=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->
6、next;//ha指向下一项AddPolyn(c,d);//将c,d相加得到新的c}t=a;a=c;//a指向运算结果DestroyPolyn(b);//销毁初始的两个多项式DestroyPolyn(t);}(2)voidDestroyPolyn(polynomial&L){//销毁多项式while(L!=NULL){p=L;L=L->next;//指向后一项free(p);}}(3)voidSort(polynomial&L){//对多项式的指数进行冒泡排序for(多项式长度){for(j=L;j->next->next!=NULL;j=j->next){if(j->next指数
7、next->next指数){//将大的冒到前面p=j->next;q=j->next->next;p->next=q->next;q->next=p;j->next=q;}}}}1.调试分析4.1问题分析与解决方法(1)多项式相乘对于多项式相乘,考虑到两个一元多项式的相乘,可以利用两个一元多项式相加的算法来实现,因为乘法运算可以分解为一系列的加法运算,所以只需循环执行加法运算,就可以完成多项式的相乘。例如A(x)和B(x)为一元多项式,则有:MxAxBxAxb
此文档下载收益归作者所有