C语言 多个多项式相乘求系数

C语言 多个多项式相乘求系数,第1张

求解多个多项式相乘的系数 。数组作为承载多项式的载体,例

a[0]a[1]a[...]a[n]

数组下标对应未知数的次幂(x^n),数组项对应当前阶数的系数(a[n]);由初始化Init、两个多项式相乘PolyMul、多项式打印PolyPrint三个函数构成。

#include 
#include 
#define MAX 100
#define MIN 10
//存放结果的全局变量
int res[MAX];
//数组下标对应x的阶,数组内容对应该阶的系数
//初始化,返回该数组的长度
int Init(int *a) {
	int len;
	puts("请输入多项式的最高次幂!");
	scanf_s("%d", &len);
	puts("请输入多项式的系数!");
	for (int i = 0; i <= len; i++) {
		scanf_s("%d", &a[i]);
	}
	return len+1;
}
//两个多项式相乘,返回当前res的长度变量
int PolyMul(int *a, int a_len, int *b, int b_len) {
	int tmp[MAX];
	memset(tmp, 0, MAX * sizeof(int));
	for (int i = 0; i < a_len; i++)
		for (int j = 0; j < b_len; j++)
			tmp[i + j] += a[i] * b[j];
	//
	memset(res, 0, MAX * sizeof(int));
	int len = a_len + b_len - 1;
	for (int i = 0; i < len; i++)
		res[i] = tmp[i];
	return len;
}
//打印
void PolyPrint(int * a,int len) {

	 int i = 0;
	 printf("(%d)x^%d", a[i], i);
	for (int i = 1; i < len; i++)
		printf("+ (%d)x^%d", a[i] ,i);
	puts(" ");
}

int main()
{
	memset(res, 0, MAX * sizeof(int));
	int a[MIN];
	int b[MIN];
	int c[MIN];
	int n, len;
	puts("Please enter the number of the polynomial");
	scanf_s("%d", &n);
	//the length of array
	int a_len, b_len, c_len;

	if (n == 1) {
		a_len = Init(a);
		PolyPrint(a, a_len);
	}
	else
	{
		a_len = Init(a);
		b_len = Init(b);
		len = PolyMul(a, a_len, b, b_len);
		//PolyPrint(res, len);
		n -= 2;
		while (n>0)
		{
			c_len = Init(c);
			len = PolyMul(res, len, c, c_len);
			n--;
		}
		PolyPrint(res, len);
	}
	
	return 0;
}

 

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/921195.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-16
下一篇2022-05-16

发表评论

登录后才能评论

评论列表(0条)

    保存