1

2 つの入力数値を計算する関数を作成しようとしています。

たとえば、入力1.0して出力5.0を取得0.00すると..

おそらく問題はあなたにとって非常に明白なものであることに気付くでしょうが、私はまったくの初心者であることを理解してください。

これは私のコードです:

#include <stdio.h>
#define MAXNUMS 50
double harmonic_mean(double number1, double number2);

int main(void)

{
    double num1, num2;
    printf("please enter two numbers to get the harmonic mean:\n");
    while ((scanf("%lf%lf", &num1, &num2)) == 2)
    {
        printf("%.2lf", harmonic_mean(num1, num2));
    }
    return 0;
}

double harmonic_mean(double number1, double number2)

{
    double harmonic, totalHarmonic;
    int total;
    int x, y;
    double numbers[MAXNUMS];
    for (x = 1, y = 0; x <= number2; x++, y++)

    {
        total = x;
        numbers[y] = number1++;
    }

    for (x = 0; x <= total; x++)
    {
        harmonic += (1/numbers[x]);
    }

    totalHarmonic = total/harmonic;

    return totalHarmonic;
}

tnx

4

1 に答える 1

2

調和平均と言ったときに正確に何を考えていたのかわかりませんが、2 つの数値の調和平均は、それらの逆数の算術平均の逆数です。

for ループやその他の複雑なコードを記述する必要はありません。次のコードで行う必要があります。

double harmonic_mean(double number1, double number2) {
    double r1 = 1 / number1;    // reciprocals
    double r2 = 1 / number2;

    double hm = 2 / (r1 + r2);  // reciprocal of the arithmetic mean of the two
    return hm;
}
于 2013-02-05T18:42:22.010 に答える