1

ユーザーに5つの整数を入力するように求めた後、算術平均、幾何平均、調和平均、および標準偏差を計算しようとしています。

算術平均がうまく機能しています。それ以降は面倒です..構造化が原因であるとほぼ確信していますが、オンラインや教科書で調査した後、何を変更すればよいかわかりません...これでどんな助けも大歓迎です!

コードは次のとおりです。

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

float a_mean;
float g_mean;
float h_mean;
float st_dev;
sum1 = 0; sum2 = 0; sum3 = 0;
float data[100];
n = 5;
int i;

int main()
{

    printf("Please Enter Five Integers:\n"); /* Prompts user input */

            for ( i = 0; i < n; ++i)
                {
                    scanf("%f", &data[i]);
                    sum1 = sum1 + data[i];
                }
            a_mean = sum1 / n;

                {
                    sum2 = sum2 * data[i];
                }
            g_mean = pow(sum2, 1 / n);

                {
                    sum3 = sum3 + ( 1 / data[i] );
                }
            h_mean = n / sum3;

    printf("Arithmetic mean: %0.2f\n", a_mean);
    printf("Geometric mean: %0.2f\n", g_mean);
    printf("Harmonic mean: %0.2f\n", h_mean);

    return 0;
}

おそらく構造化のための基本的なことは知っていますが、このことについてはまだあまり知らないので、事前に感謝します

**また、標準偏差の計算/出力をまだ作成しようとしていないという事実を無視してください。ありがとう

4

3 に答える 3

1

1 つの for ループ内ですべての合計を実行するか、3 つの for ループを実行します。

あなたが始めているので、両方を試してみてください!

Here is the code:
#include <math.h>
#include <stdio.h>
#include <stdlib.h>

float a_mean;
float g_mean;
float h_mean;
float st_dev;
sum1 = 0; sum2 = 0; sum3 = 0;
float data[100];
n = 5;
int i;

int main()
{

    printf("Please Enter Five Integers:\n"); /* Prompts user input */

            for ( i = 0; i < n; ++i)
                {
                    scanf("%f", &data[i]);
                    sum1 = sum1 + data[i];
                    sum2 = sum2 * data[i];
                    sum3 = sum3 + ( 1 / data[i] );
                }

            a_mean = sum1 / n;
            g_mean = pow(sum2, 1 / n);
            h_mean = n / sum3;

           printf("Arithmetic mean: %0.2f\n", a_mean);
           printf("Geometric mean: %0.2f\n", g_mean);
           printf("Harmonic mean: %0.2f\n", h_mean);

    return 0;
}
于 2013-09-15T21:48:29.533 に答える
0

問題は、for ループが scanf のみを実行してから、sum1 を変更することです。sum2 = sum2 * data[i]andを for ループの本体に移動する必要がありsum3 = sum3 + (1 / data[i])ます (for ループの直後の {} 内)。

于 2013-09-15T21:49:19.973 に答える
0

まず第一に、あなたのコードはコンパイルされません。グローバル変数にたくさんの型がありません。2 つ目 - 中括弧を使用するだけでは、ループを分割して続行することはできません。最初のループの後にあるいくつかのセットは、通常のコードとして 1 回だけ実行されるため、他の合計は適切に収集されません。

スタイルに関しては、使用するグローバルを減らすようにしてください。これは悪い習慣です

于 2013-09-15T21:49:48.070 に答える