首页 数据结构实验报告-一元多项式的加法运算

数据结构实验报告-一元多项式的加法运算

举报
开通vip

数据结构实验报告-一元多项式的加法运算问题描述:设Pn(x)和Qm(x)分别两个一元多项式。试编写程序实现一元多项式的加法运算。一、需求分析:1、本程序需要基于线性表的基本操作来实现一元多项式的加法,也可以用数组实现。2、两个多项式都有键盘输入相应的系数和指数。3、//第一个多项式为9x15+7x8+5x3+3x输入4//表示第一个多项式的项数9,15(回车)//表示9x157,8(回车)5,3(回车)3,1(回车)输出9x^15+7x^8+5x^3+3x^1//第二个多项式为-7x8+6x3+2输入3//表示第二个多项式的项数6,3(回车)//表示9...

数据结构实验报告-一元多项式的加法运算
问题描述:设Pn(x)和Qm(x)分别两个一元多项式。试编写程序实现一元多项式的加法运算。一、需求 分析 定性数据统计分析pdf销售业绩分析模板建筑结构震害分析销售进度分析表京东商城竞争战略分析 :1、本程序需要基于线性 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 的基本操作来实现一元多项式的加法,也可以用数组实现。2、两个多项式都有键盘输入相应的系数和指数。3、//第一个多项式为9x15+7x8+5x3+3x输入4//表示第一个多项式的项数9,15(回车)//表示9x157,8(回车)5,3(回车)3,1(回车)输出9x^15+7x^8+5x^3+3x^1//第二个多项式为-7x8+6x3+2输入3//表示第二个多项式的项数6,3(回车)//表示9x15-7,8(回车)2,0(回车)输出-7x^8+6x^3+2x^0求和结果9x^15+11x^3+3x^1+2x^0二、概要 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 :抽象数据类型为实现上述程序的功能,应以整数存储用户的输入,以及计算的结果。实现多项式的运算,利用数组的方式需开辟一个二维数组,利用链表的方式须创造两个链表。算法的基本思想数组实现:定义一个结构体数组,p存储系数,q存储指数。分别输出两次输入的多项式。将两次输入的多项式的指数按从大到小的顺序进行排列,同时相应的系数要进行交换。输出时如果进行判断。如果当前该项与下一项的的系数相同,将两项系数相加后输出,并跳过下一项。如果不相等,直接输出。输出时需注意的问题:当系数为0时,该项不输出  当系数为负数时,不要再在前面输出+。程序的流程程序由三个模块组成:输入模块:完成两个多项式的输入。处理模块:将多项式按其指数大小进行排列。输出模块:输出合并后的多项式。三、详细设计算法的具体步骤:数组方法:structcode{intp,q;}a[1000],b[1000];//结构体数组,可以用二维数组代//替for(i=0;i<n;i++){for(j=i+1;j<n;j++){if(a[j].q>a[i].q){temp=a[j].q;//指数排序a[j].q=a[i].q;a[i].q=temp;temp=a[j].p;//系数跟着变化a[j].p=a[i].p;a[i].p=temp;}    }//对输入的指数进行排序,相应的系数跟着变化cout<<a[0].p<<"x^"<<a[0].q; //先输出第一项if(a[i].p>0)elseif(a[i].p<0)cout<<a[i].p<<"x^"<<a[i].q;cout<<'+'<<a[i].p<<"x^"<<a[i].q;//完成运算符和其他项的输//出,然后类似于上面,对第二个多项式进行相应的操作。for(i=0;i<m;i++){  a[n+i].q=b[i].q;a[n+i].p=b[i].p;}//将两个多项式的指数,系数存储到一个数组for(i=0;i<m+n;i++)for(j=i+1;j<n+m;j++){if(a[j].q>a[i].q){temp=a[j].q;a[j].q=a[i].q;a[i].q=temp;temp=a[j].p;a[j].p=a[i].p;a[i].p=temp;}}//按指数由大到小进行排列if(a[0].q!=a[1].q){cout<<a[0].p<<"x^"<<a[0].q;j=1;}else{cout<<a[0].p+a[1].p<<"x^"<<a[0].q;j=2;}//进行合并同类项的操作,如果该项与下一项的指数相等,//则系数相加。否则,只输出该项for(i=j;i<m+n-1;i++){if(a[i].q!=a[i+1].q){if(a[i].p>0)cout<<"+"<<a[i].p<<"x^"<<a[i].q;if(a[i].p<0)//负号相当于减号cout<<a[i].p<<"x^"<<a[i].q;} else{if((a[i].p+a[i+1].p)>0)cout<<"+"<<a[i].p+a[i+1].p<<"x^"<<a[i].q;elseif((a[i].p+a[i+1].p)<0)cout<<a[i].p+a[i+1].p<<"x^"<<a[i].q;i++;}}if(a[m+n-1].q!=a[m+n-2].q){   if(a[i].p>0)cout<<"+"<<a[i].p<<"x^"<<a[i].q;elseif(a[i].p<0)cout<<a[i].p<<"x^"<<a[i].q;}//对第一项与最后一项做特殊处理,以免输出多余的运算符,同时,当系数为0,则不输出该项四、调试分析略。五、测试结果六、用户使用 说明 关于失联党员情况说明岗位说明总经理岗位说明书会计岗位说明书行政主管岗位说明书 (可选)本程序的运行环境为windows操作系统,执行文件为duoxianshi.exe运行程序时按顺序输入数字即可得到多项式。七、实验心得(可选)对于多项式的运算的,运算符的输出很重要,一开始多输出一个‘+’,并且当为负数时会输出+--。还有当系数为0时的输出都没有专门考虑。通过与同学讨论,这次用链表的来做这道题目让我收获很大。对链表的构建更加的熟练。对链表向前推进把握的更加准确。通过本次试验,我发现自己分析问题不是很全面,忽略掉一些细节。以后分析问题时要仔细考虑,认真分析,避免在细节上犯错误。在此次实验的同时也将上课所学内容进行了复习。附录(可选)#include<iostream>usingnamespacestd;structcode{intp,q;}a[1000],b[1000];      //定义一个结构体数组,p存储系数,q存储指数intmain(){inti,j,n,m,temp;while(cin>>n){for(i=0;i<n;i++)cin>>a[i].p>>a[i].q;for(i=0;i<n;i++){for(j=i+1;j<n;j++){if(a[j].q>a[i].q){temp=a[j].q;  //指数排序a[j].q=a[i].q;a[i].q=temp;temp=a[j].p;        //系数跟着变化a[j].p=a[i].p;a[i].p=temp;}     }}            //对输入的指数进行排序,相应的系数跟着变化cout<<a[0].p<<"x^"<<a[0].q; for(i=1;i<n;i++){if(a[i].p>0)cout<<'+'<<a[i].p<<"x^"<<a[i].q;elseif(a[i].p<0)cout<<a[i].p<<"x^"<<a[i].q;}cout<<endl;    //输出第一个多项式cin>>m;for(i=0;i<m;i++)cin>>b[i].p>>b[i].q;for(i=0;i<m;i++){for(j=i+1;j<m;j++){if(b[j].q>b[i].q){temp=b[j].q;b[j].q=b[i].q;b[i].q=temp;temp=b[j].p;b[j].p=b[i].p;b[i].p=temp;}     }}cout<<b[0].p<<"x^"<<b[0].q; for(i=1;i<m;i++){if(b[i].p>0)cout<<"+"<<b[i].p<<"x^"<<b[i].q;elseif(b[i].p<0)cout<<b[i].p<<"x^"<<b[i].q;}cout<<endl;  //输出第二个多项式for(i=0;i<m;i++){a[n+i].q=b[i].q;a[n+i].p=b[i].p;}            //将两个多项式的指数,系数存储到一个数组for(i=0;i<m+n;i++)for(j=i+1;j<n+m;j++){if(a[j].q>a[i].q){temp=a[j].q;a[j].q=a[i].q;a[i].q=temp;temp=a[j].p;a[j].p=a[i].p;a[i].p=temp;}}              //按指数由大到小进行排列if(a[0].q!=a[1].q){cout<<a[0].p<<"x^"<<a[0].q;j=1;}else{cout<<a[0].p+a[1].p<<"x^"<<a[0].q;j=2;}          //进行合并同类项的操作,如果该项与下一项的指数相等,则系数相加。否则,只输出该项for(i=j;i<m+n-1;i++){if(a[i].q!=a[i+1].q){if(a[i].p>0)cout<<"+"<<a[i].p<<"x^"<<a[i].q;if(a[i].p<0)cout<<a[i].p<<"x^"<<a[i].q;} else{if((a[i].p+a[i+1].p)>0)cout<<"+"<<a[i].p+a[i+1].p<<"x^"<<a[i].q;elseif((a[i].p+a[i+1].p)<0)cout<<a[i].p+a[i+1].p<<"x^"<<a[i].q;i++;}}              //负数情况if(a[m+n-1].q!=a[m+n-2].q){ if(a[i].p>0)cout<<"+"<<a[i].p<<"x^"<<a[i].q;elseif(a[i].p<0)cout<<a[i].p<<"x^"<<a[i].q;}}              //对第一项与最后一项做特殊处理,以免输出多余的运算符,同时,当系数为0,则不输出该项return0;}
本文档为【数据结构实验报告-一元多项式的加法运算】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_589748
暂无简介~
格式:doc
大小:31KB
软件:Word
页数:0
分类:互联网
上传时间:2019-08-20
浏览量:75