0

私はクラスのプロジェクトに取り組んでいますが、幾何平均の出力に問題があり、常に 1 になり、それは正しくないと確信しています。

これが私のコードです:

#include<iostream>

#include<math.h>

using namespace std;

int main(int argc, char**argv) 
{
float i, j, k;
float a, h, g;

cout<<"Enter 3 floating point numbers"<<endl;
cin>>i>>j>>k;

while(i>0 && j>0 && k>0 )
{
    a = (i+j+k)/3;
    h = 3/((1/i) + (1/j) + (1/k));


    g = pow((i*j*k),(1/3));

    cout<<"Arithmetic: "<<a<<endl;
    cout<<"Harmonic: "<<h<<endl;
    cout<<"Geometric: "<<g<<endl;

    cout<<"Enter 3 floating point numbers"<<endl;
    cin>>i>>j>>k;
}


return(0);
}
4

3 に答える 3

4

1/3整数除算なのでゼロです。両方のオペランドが整数型の場合、常に整数除算になります。次に、何かの力をゼロにして1を取得します。

浮動小数点リテラルを使用する必要があります: 1.0/3.0would have typedoubleおよび1.0f/3.0fwould have type float

于 2011-09-02T16:59:50.670 に答える
2

1/3に等しい整数0です。浮動小数点値を取得するには、1.0/3.0(または) を記述する必要があります。1./3

于 2011-09-02T17:00:19.820 に答える
1
(1/3)

これは、剰余が切り捨てられるように定義されているため、常に 0 を生成する整数除算です。一方または両方を浮動小数点値にキャストする必要があります。

于 2011-09-02T16:59:54.937 に答える