【问题标题】:Finding Geometric Mean of user input查找用户输入的几何平均值
【发布时间】:2011-11-09 08:26:25
【问题描述】:

我正在为一个班级做一个项目,我在输出几何平均值时遇到了问题,它总是为 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);
}

【问题讨论】:

  • 您应该使用调试器来尝试找出计算失败的部分。
  • Google:“c++ 几何平均值”并寻找差异。

标签: c++ mean


【解决方案1】:

1/3 为零,因为它是整数除法。如果两个操作数都是整数类型,它总是整数除法。然后你把某事的力量归零并得到一个。

您需要使用浮点文字:1.0/3.0 的类型为 double1.0f/3.0f 的类型为 float

【讨论】:

  • 有”?在什么条件下?
  • @Kerrek: 在他写的条件下:)
【解决方案2】:

1/3 是一个等于0 的整数。你应该写1.0/3.0(或1./3)来获得一个浮点值。

【讨论】:

  • 我会分开并写1.0/3
  • 那是因为你是一个数学家。 :-) 我认为&lt;chrono&gt; 提供了std::ratio,也许有一种 C++ 方法可以以通用方式获取分数...
【解决方案3】:
(1/3)

这是一个整数除法,总是产生 0,因为余数被定义为截断。您需要将一个或两个转换为浮点值。

【讨论】:

  • 演员?该语言提供方便的浮点文字!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多