1
for (i = 0; i < n; i++)
    {
        x[i] = (float) (i * step);
        k = 5;
        sum = 0;
        while(k > 0)
        {
            sum = sum + (1/k) * sin((k*PI*x[i])/5);
            k = k - 2;
        }
        y1[i] = (4/PI)*sum;

        y2[i] = 0*(4/PI)*sin((PI*x[i])/5);
    }

1以外のkの値ごとにデバッグすると、合計が0に等しいことが示されますが、ループを正しく実装していますか?

編集1:

int k;
double sum;
4

2 に答える 2

7

1とkは両方ともintであるため、1 / kは整数除算であるため、k> 1の場合、常に0になります。したがって、合計には何も追加されません。1/kで浮動小数点除算を実行する必要があります。1.0 / k1/kの代わりに試してください。

于 2012-05-22T01:44:19.560 に答える
0

1/kは0になります。整数除算なので。1.0 /kまたは1/(float)kを与える必要があります

于 2012-05-22T01:46:02.057 に答える