案例:正常一元多项式的运算

一、前言

        本文学自王卓老师的《数据结构》

二、内容

        一元多项式的运算:实现两个多项式的相加运算

        

                图一

        如图一,线性表的每一项指数都隐藏在了系数Pi中了。如第一项P0的指数就是0

       例子:P3(x)=2+3x+4x^2。对于第一个的系数2,其指数为0,第二个系数3,指数则为1,第三个系数4,指数则为2。也即是说,指数从0开始算起,往后不断加1。

                         图二 

那么,两个正常的一元多项式如何相加呢?

如下例。

(1)对于指数为0的第一项,系数相加,10+(-3)=7

(2)对于指数为1的第二项,系数相加,5+8=13

(3)对于指数为2的第三项,系数相加,-4+4=0

(4)对于指数为3的第四项,系数相加,3+0=3(另一个多项式未出现的项,其系数为0)

(5)对于指数为4的第五项,系数相加,2+(-5)=-3

(6)对于指数为5的第六项,系数相加,0+7=7

(7)对于指数为6的第七项,系数相加,0+(-2)=-2

         图三

         图四

 三、代码实现

注:本文的指数依次累加,不能跳,即便是没有,也要输入系数0

如上例Pb,没有x^3,但是也要输入0,即-3 8 4 0 -5 7 -2

#include <iostream>
using namespace std;
int main()
{
	int a[30]={0}, b[30]={0};
	int n,m;
	cout << "请输入多项式A项的个数" << endl;
	cin >> n;
	cout << "输入每个项的系数" << endl;
	for (int i = 0; i < n; i++)
	{
		cin >> a[i];
	}
	cout << "请输入多项式B项的个数" << endl;
	cin >> m;
	cout << "输入每个项的系数" << endl;
	for (int i = 0; i < m; i++)
	{
		cin >> b[i];
	}
	int sum = n > m ? n : m;
	for (int i = 0; i < sum; i++)
	{
		a[i] += b[i];
	}
	cout << "相加后的多项式为" << endl;
	for (int i = 0; i < sum; i++)
		cout << a[i] << endl;
}

  四、测试结果

        图五 

猜你喜欢

转载自blog.csdn.net/m0_53679998/article/details/129864943
今日推荐