C++ 我如何获得正确的体重指数?

C++ 我如何获得正确的体重指数?,c++,calculation,C++,Calculation,我在计算体重指数时遇到了问题。请告诉我哪里出了问题,因为答案总是以-nan(ind)返回。我确信问题在于计算本身,因为我删除了displayFitnessResults函数并简化了代码,但我仍然得到了错误 #include<iostream> #include <cmath> using namespace std; void getData(float weightP, float heightP) { cout << "Enter indivua

我在计算体重指数时遇到了问题。请告诉我哪里出了问题,因为答案总是以-nan(ind)返回。我确信问题在于计算本身,因为我删除了displayFitnessResults函数并简化了代码,但我仍然得到了错误

#include<iostream>
#include <cmath>
using namespace std;

void getData(float weightP, float heightP)
{
    cout << "Enter indivual's wight in kilograms and height in metres: ";
    cin >> weightP >> heightP;
}

float calcBMI(float weightP, float heightP)
{
    return weightP / (heightP * heightP);
}

void displayFitnessResults(float calcBMI)
{
    if (calcBMI < 18.5)
    {
        cout << "The individuals BIM index is " << calcBMI << " and his/her weight status is underweight";
    }
    else if (calcBMI >= 18.5 && calcBMI <= 24.9)
    {
        cout << "The individuals BIM index is " << calcBMI << " and his/her weight status is healthy";
    }
    else if (calcBMI <= 25 && calcBMI >= 29.9)
    {
        cout << "The individuals BIM index is " << calcBMI << " and his/her weight status is overweight";
    }
    else (calcBMI >= 30);
    {
        cout << "The individuals BIM index is " << calcBMI << " and his/her weight status is obese";
    }
}


int main()
{
    float weight{}, height{}, BMI{};

    cout.setf(ios::fixed);
    cout.precision(2);

    getData(weight, height);

    BMI = calcBMI(weight, height);

    displayFitnessResults(BMI);

    return 0;
}
#包括
#包括
使用名称空间std;
void getData(浮动权重p、浮动高度p)
{
cout>重量p>>高度p;
}
浮标计算值(浮标重量P、浮标高度P)
{
返回权重p/(高度p*高度p);
}
void displayFitnessResults(浮动计算结果)
{
如果(calcBMI<18.5)
{
cout您的
getData()
函数按值获取其参数,因此它对这些参数所做的任何修改都不会反映回
main()
中的变量,因此它们在传递到
calcBMI()
时仍然是
0.0

您需要改为通过引用传递参数:

您的
getData()
函数按值获取其参数,因此它对参数所做的任何修改都不会反映回
main()
中的变量,因此当传递到
calcBMI()
时,它们仍然是
0.0

您需要改为通过引用传递参数:


除了Remy所说的之外,你应该更喜欢像这样声明你的变量
float weight,height,BMI;
原因是,如果你这样做了,那么编译器会警告你使用的是未初始化的变量,这会(希望如此)使您意识到
getData
的问题。通过将变量初始化为无意义的值,您隐藏了一个潜在的有用警告。
calcBMI=29.9
永远都不是
true
。是时候退出调试器了。代码中的第一个错误。如果
calcBMI
24.95
,会发生什么?(提示:不会打印任何内容)。当
calcBMI==29.95
时,也存在类似的错误。代码审查:使用一个函数,以字符串形式返回
状态。然后您的显示函数就是:
cout@Bathsheba谢谢,但这些是分配中给出的参数:1.低于18.5体重不足2.18.5-24.9健康3.25.0-29.9超重4.30.0上面ObeseIn除了Remy所说的之外,你应该更喜欢像这样声明你的变量
float weight,height,BMI;
原因是,如果你这样做了,那么编译器会警告你,你使用的是未初始化的变量,这会(希望如此)使您意识到
getData
的问题。通过将变量初始化为无意义的值,您隐藏了一个潜在的有用警告。
calcBMI=29.9
永远都不是
true
。是时候退出调试器了。代码中的第一个错误。如果
calcBMI
24.95
,会发生什么?(提示:不会打印任何内容)。当
calcBMI==29.95
时,也存在类似的错误。代码审查:使用一个函数,以字符串形式返回
状态。然后您的显示函数就是:
cout@Bathsheba谢谢,但这些是分配中给出的参数:1.低于18.5体重不足2.18.5-24.9健康3.25.0-29.9超重4.30.0肥胖以上
void getData(float &weightP, float &heightP)