首页 > 解决方案 > 使用函数重写程序

问题描述

有谁知道你将如何重写我为多项式乘法编写的程序,但这次使用一个函数来乘以这些多项式,打印结果和一个函数来加载两个多项式的系数?这是我的原始代码 -

#include<stdio.h>

main ()
{
    int i, j, sizePoly1, sizePoly2;
    printf ("Enter number of terms in Polynomial 1\n");
    scanf ("%d", &sizePoly1);
    printf ("Enter number of terms in Polynomial 2\n");
    scanf ("%d", &sizePoly2);

    int a[sizePoly1], b[sizePoly2], prod[sizePoly1 + sizePoly2];
    printf ("Enter Elements of Polynomial 1\n");
    for (i = 0; i < sizePoly1; i++)
    {
        printf ("Enter x^%d Co-Efficient of Polynomial 1\n", i);
        scanf ("%d", &a[i]);
    }

    printf ("Enter Elements of Polynomial 2\n");
    for (i = 0; i < sizePoly2; i++)
    {
        printf ("Enter x^%d Co-Efficient of Polynomial 2\n", i);
        scanf ("%d", &b[i]);
    }
    for (i = 0; i < sizePoly1 + sizePoly2; i++)
    {
        prod[i] = 0;
    }

    for (i = 0; i < sizePoly1; i++)
    {
        for (j = 0; j < sizePoly2; j++)
        {
            if (a[i] != 0 && b[j] != 0)
                prod[i + j] += a[i] * b[j];
        }
    }
    for (i = sizePoly1 + sizePoly2 - 1; i >= 0; i--)
    {
        if (prod[i] != 0)
        {
            if (i != 0)
            {
                printf ("%d x^%d + ", prod[i], i);
            }
            else
            {
                printf ("%d x^%d\n", prod[i], i);
            }
        }
    }
}

这就是我想出的。我几乎不了解函数,所以这就是为什么它不能真正工作 -

#include<stdio.h>

int Coef (int i, int j , int a[sizePoly1], int b[sizePoly2],){

    printf ("Enter Elements of Polynomial 1\n");
    for (i = 0; i < sizePoly1; i++)
    {
        printf ("Enter x^%d Co-Efficient of Polynomial 1\n", i);
        scanf ("%d", &a[i]);
    }

    printf ("Enter Elements of Polynomial 2\n");
    for (i = 0; i < sizePoly2; i++)
    {
        printf ("Enter x^%d Co-Efficient of Polynomial 2\n", i);
        scanf ("%d", &b[i]);
    }
}


int Polyproduct (int i, int j, int sizePoly1, int size Poly2, int a[sizePoly1, int b[sizePoly2],       int prod[sizePoly1 + sizePoly2] ){
        for (i = 0; i < sizePoly1 + sizePoly2; i++)
        {
            prod[i] = 0;
        }

        for (i = 0; i < sizePoly1; i++)
        {
            for (j = 0; j < sizePoly2; j++)
        {
                if (a[i] != 0 && b[j] != 0)
                    prod[i + j] += a[i] * b[j];
        }
        }
    }

    int PolyPrint (int i, int sizePoly1, int sizePoly2, int prod[sizePoly1 + sizePoly2]) {

        for (i = sizePoly1 + sizePoly2 - 1; i >= 0; i--)
        {
            if (prod[i] != 0)
        {
                if (i != 0)
            {
                    printf ("%d x^%d + ", prod[i], i);
            }
                else
            {
                    printf ("%d x^%d\n", prod[i], i);
            }
        }
        }
    }

    int main ()
    {
        int i, j, sizePoly1, sizePoly2;
        printf ("Enter number of terms in Polynomial 1\n");
        scanf ("%d", &sizePoly1);
        printf ("Enter number of terms in Polynomial 2\n");
        scanf ("%d", &sizePoly2);
        Coef();
        Polyproduct();
        PolyPrint();

    }

标签: cfunction

解决方案


看我的评论。我详细说明一下。

你的主要可能看起来像:

int main ()
{
  int sizePoly1, sizePoly2;
  printf ("Enter number of terms in Polynomial 1\n");
  scanf ("%d", &sizePoly1);
  printf ("Enter number of terms in Polynomial 2\n");
  scanf ("%d", &sizePoly2);

  int poly1[sizePoly1];
  int poly2[sizePoly2];
  int prod[sizePoly1 + sizePoly2];

  Coef(sizePoly1, sizePoly2, poly1, poly2);
  Polyproduct(sizePoly1, sizePoly2, poly1, poly2, prod);
  PolyPrint(sizePoly1, sizePoly2, prod);
  return 0;
}

函数Coef应声明为:

int Coef (int sizePoly1, int sizePoly2 , int a[sizePoly1], int b[sizePoly2])
{
    int i, j;
    // ...

打开警告后,您将收到一些额外的警告。祝你好运!


推荐阅读