【问题标题】:How can i input this formula into my c++ program?如何将此公式输入到我的 c++ 程序中?
【发布时间】:2014-10-15 15:12:04
【问题描述】:

风寒 = 35.74 + 0.6215T - 35.75(V^0.16) + 0.4275T(V^0.16)

我需要正确的方法将上述公式输入到我的程序中。我目前有以下内容,这给了我一个疯狂的数字:

WindChill = ((35.74 + (0.6215 * temperature))
    - (35.75 * pow(windSpeed, 0.16))
    + (0.4275 * temperature * pow(windSpeed, 0.16)));

我是一名初级程序员,C++ 是我正在学习的第一门语言,因此我将不胜感激。谢谢你。

【问题讨论】:

  • 问题不清楚。
  • 你能指定输入值和你得到的输出,以及你期望的输出吗?
  • 是所有这些变量都声明为浮点数/双精度数,还是你有 ints 潜伏在周围?
  • 顺便说一句,你不需要任何这些括号,除了调用 pow 函数
  • 都是双打,WindChill,温度,风速。

标签: c++ formula


【解决方案1】:

您可以通过删除括号来简化。

double wind_chill = 35.74 + 0.6215 * T - 35.75 * pow(V, 0.16) + 0.4275 * T * pow(V, 0.16);

但在这种情况下,您需要计算两次功率。更好的方法是:

double pow_v = pow(V, 0.16);
double wind_chill = 35.74 + 0.6215 * T - 35.75 * pow_v + 0.4275 * T * pow_v;

【讨论】:

    【解决方案2】:

    试试这个。如果您使用自己的幂函数,而不是一次又一次地调用该方法,您可以将其存储在某个变量中。这对效率和可读性都有好处。

    double windPower = pow(windspeed, 0.16);
    WindChill = (35.74 + (0.6215 * temp) - (35.75 * windPower ) + (0.4275 * temp * windPower ))
    

    你的幂函数(如果你想定义它)是这样的:-

    int pow(int x, unsigned int y)
    {
        if( y == 0)
            return 1;
        else if (y%2 == 0)
            return power(x, y/2)*power(x, y/2);
        else
            return x*power(x, y/2)*power(x, y/2);
    
    }
    

    这是针对整数的(因为我能够快速测试它)。

    【讨论】:

    • 他们正试图将windspeed 提升到0.16 的权力。你为什么要写一个 pow 函数来接受 unsigned int 的力量?
    • 我刚刚给出了 int 的例子,因为我能够快速测试它。我相信复制它的两倍并不是什么困难的任务
    • ... 或者只使用std::pow
    • 是的,随时为您服务。这就是为什么我说如果你想编写自己的幂函数。
    【解决方案3】:

    如果您使用相同的数据手动计算,它会给出相同的疯狂数字还是正确答案?如果你得到相同的疯狂数字,也许你需要将一些数字转换为正确的单位,例如温度应该是开尔文而不是摄氏度或华氏度。

    (这应该是一个评论,但我还没有足够的代表......)

    【讨论】:

      猜你喜欢
      • 2021-10-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-28
      • 1970-01-01
      • 2011-04-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多