实验二 一元二项式的运算
一.
问题描述:
设Pn(x)和Qm(x)分别两个一元多项式。试编写程序实现一元多项式的加法运算。
二.
需求分析:
1. 本程序需要基于线性表的基本操作来实现一元多项式的加法,也可以用数组实现。
2.两个多项式都有键盘输入相应的系数和指数。
3.第一个多项式为9x15+ 7x8+5x3+3x
输入
4 //表示第一个多项式的项数
9, 15(回车) //表示9x15
7, 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
三.概要设计
抽象数据类型:
为实现上述程序的功能,应以整数存储用户的输入,以及计算的结果。
实现多项式的运算,利用数组的方式需开辟一个二维数组。
算法的基本思想:
数组实现:
定义一个结构体数组,p存储系数,q存储指数。
分别输出两次输入的多项式。
将两次输入的多项式的指数按从大到小的顺序进行排列,同时相应的系数要进行交换。
输出时如果进行判断。如果当前该项与下一项的的系数相同,将两项系数相加后输出,并跳过下一项。
如果不相等,直接输出。
输出时需注意的问题:
当系数为0时,该项不输出
当系数为负数时,不要再在前面输出“+”。
程序的流程:
(1)
输入模块:完成两个多项式的输入。
(2)
处理模块:将多项式按其指数大小进行排列。
(3)
输出模块:输出合并后的多项式。
四.源程序:
#include
using namespace std;
struct code{
int p,q;
}a[1000],b[1000]; //结构体数组,可以用二维数组代替
int main(){
int i,j,n,m,temp;
while(cin>>n){
for(i=0;i>a[i].p>>a[i].q;
for(i=0;ia[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<0)
cout<<'+'<>m;
for(i=0;i>b[i].p>>b[i].q;
for(i=0;ib[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<0)
cout<<"+"<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<0)
cout<<"+"<0)
cout<<"+"<0)
cout<<"+"<
本文档为【数据结构实验报告——一元多项式的运算】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。