1

このプログラムは、2 つの多項式を加算して結果を出力するためのものです。

乗数を配列に格納し、インデックス az をパラメーターのべき乗として使用するだけです。

合計と減算を行いますが、積に関しては印刷します

0x0 0*x2 0*x3 ...

これは基本的な C プログラミングのクラス用で、3 時間以内にマスターに渡す必要があります :-(

配列で乗数を取得し、いくつかの関数を使用して結果を計算します。

#include <stdio.h>
#include <stdlib.h>

double a[50], b[50], c[101];
int dega, degb;

SumArray (a, b)
double a[], b[];
{
    extern int dega, degb;
    extern double c[];
    int i, max = (dega < degb ? degb : dega) + 1;

    for(i = 0; i < max; i++)
        c[i] = a[i] + b[i];
}

SubtractArray(a, b)
double a[], b[];
{
    extern int dega, degb;
    extern double c[];
    int i, max = (dega < degb ? degb : dega) + 1;
    for (i = 0; i < max; i++)
        c[i]=a[i]-b[i];
}

ProductArray(a, b)
double a[], b[];
{
    extern int dega, degb;
    extern double c[];
    int i,j;
    double tempa, tempb;
    for(i = 0; i < dega + 1; i++)
        for(j = 0; j < degb + 1; j++)
        {
            tempa = a[i];
            tempb = b[j];
            c[i + j] = c[i + j] + (tempa * tempb);
        }
}

int main()
{
    extern int dega, degb;
    extern double a[50], b[50], c[]; //stores the multipliers
    int i, operation;

    for(i = 0; i < 50; i++)
        a[i] = b[i] = 0;
    for(i = 0; i < 102; i++)
        c[i] = 0;

    printf("darjeye chand jomleee ha ra vared konid");
    scanf("%d %d", &dega, &degb);
    printf("zarayebe chand jomlee aval ra vaerd konid");

    for(i = 0; i < dega + 1; i++)
        scanf("%d", &a[i]);
    printf("zarayebe chand jomlee dovoom ra vaerd konid");
    for(i = 0; i < degb + 1; i++)
        scanf("%d", &b[i]);
    printf("amaliyate morede nazartan ra vare konid baraye jame 0, tafrigh 1, zarb 2 ra vared konid");
    scanf("%d", &operation);

    switch(operation)
    {
        case 0:
        {
            SumArray(a,b);
            for (i = 0; i < (dega > degb ? dega : degb) + 1; i++)
            {
                printf(" %d*x", c[i]);
                printf("%d ", i);
            }
            break;
        }
        case 1:
        {
            SubtractArray(a,b);
            for (i = 0; i < (dega > degb ? dega : degb) + 1; i++)
            {
                printf(" %d*x", c[i]);
                printf("%d ", i);
            }
            break;
        }
        case 2:
        {
            ProductArray(a,b);

            for(i = 0; i < (dega + degb + 1); i++)
            {
                printf("\%d*x", c[i]);
                printf("%d ", i);
            }
            break;
        }
        default:
            printf("amaliyate vared shode sahih nabud");
    }

    system("PAUSE");
    return 0;
}
4

1 に答える 1

1

scanf("%d",a[i]);あるべきでscanf("%d",&a[i]);あり、scanf("%d",b[i]);あるべきであるscanf("%d",&b[i]);

scanf変数のアドレスが必要です。配列の場合、たとえば、あなたのケースdouble a[50]では、単純に書くだけaで配列の開始アドレスが得られます。これは、 が最初の要素であるのaと同じですが、最初の要素へのアドレスではありません。はその要素へのアドレスである要素です。あなたがそれを手に入れたことを願っています。&a[0]a[0]a[i]&a[i]

于 2013-06-12T04:44:02.650 に答える