
求解多个多项式相乘的系数 。数组作为承载多项式的载体,例
| 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;
}
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)