乘法多项式:意外输出

时间:2017-10-17 10:06:28

标签: c arrays for-loop polynomial-math

我基本上尝试使用下面给出的代码找到(x + 1)^ 2(对于多项式1和2的幂,输入为1 1,对于P1的系数为1 1,对于P2的系数为1)。

#include <stdio.h>

int main()
{
    int m,n;

    printf("enter the highest powers of P1 and P2\n");
    scanf("%d%d",&m,&n);          //m= power of P1, n=power of P2

    int a[m],b[n],c[m+n];         //a[m]= coeff of P1, b[n]= coeffof P2

    printf("enter the values\n");



    for(int i=0;i<=m;i++)         //takes coeff of P1 as input
      { printf("a[%d]=\n",i);     //array index are same as the power of x
        scanf("%d",&a[i]);
      }

    for(int i=0;i<=n;i++)         //takes coeff of P2 as input
      { printf("b[%d]=\n",i);     //array index are same as the power of x
        scanf("%d",&b[i]);
      }

    for(int i=0;i<=m+n;i++)       //to initialize array c to zero
      { printf("c[%d]=\n",i);
        scanf("%d",&c[i]);
      }

    for(int k=0;k<=m+n;k++)       //k= power of x in the polynomial= array index  
      {  for(int i=0;i<=k;i++)
          c[k]=c[k]+a[i]*b[k-i];  //for fixed k, summing a[i]*b[k-i]
      }

    for(int i=0;i<=m+n;i++)
       printf("c[%d]=%d\n",i,c[i]);

}

我的答案为2293469x ^ 2 + 2x + 1.请帮忙。

1 个答案:

答案 0 :(得分:0)

这是一种误解,以下会做

int a [m + 1],b [n + 1],c [m + 1 + n + 1];

有效指数则为0..m和0..n。

通常的做法是使用2 2和<m<n

a和b中的索引超出范围:

for(int k = 0; k <= m+n; k++)
{
    for(int i = 0; i <= k; i++)
    {
        c[k] = c[k] + a[i] * b[k-i];
    }
}