C ++ BMI计算器问题

时间:2014-09-27 00:01:15

标签: c++

我是初学者,所以请放轻松。我的问题在于我的输出。如果你输入一个全名,它会崩溃。我应该使用除字符串以外的东西吗?它最初正确显示输出,但随后它也会向下运行,并添加你超重线和额外的计算。如果计算累加到用户超重,它将完美地工作。此外,未应用设定精度。我很难过。

int main()
{
    double height, weight, bmi; // height in inches, weight in pounds, bmi is total bmi of user
    string name; // name of the user
    int num; // the number 703 used for bmi calculation
    num = 703; // constant used for bmi calculation

    cout << "Please enter your full Name:"; // Asking the user to input their name
    cin >> name; // Users name 

    cout << "Please enter your height(in inches):"; // User height in inches
    cin >> height; // Users height

    cout << "Please enter your weight(in lbs):"; //Users weight in lbs
    cin >> weight; // Users weight

    bmi = (weight / pow(height, 2)) * num; // the actual calculation of the bmi of the user

    if (bmi >= 18.5 && bmi < 25) {
        cout << name << " your BMI is " << setprecision(1) << bmi; // outputting to the user their actaul BMI
        cout << endl;
        cout << "You are in the optimal weight category!"; // outputting their category
    }

    else if (bmi < 18.5) {
        cout << name << " your BMI is " << setprecision(1) << bmi;
        cout << endl;
        cout << "You are underweight.";
    }

    else (bmi >= 25); {
        cout << name << " your BMI is " << setprecision(1) << bmi;
        cout << endl;
        cout << "You are overweight.";
    }

    return 0;

}

3 个答案:

答案 0 :(得分:1)

你在这一行上有一个虚假的分号:

else (bmi >= 25); {

答案 1 :(得分:0)

cin使用空格作为默认分隔符。因此,当您输入“First Last”之类的名称时,cin >> name;将仅使用“First”一词,而cin >> height;将尝试使用“Last”,您将遇到错误。如果您想允许使用全名,请尝试使用std::getline

答案 2 :(得分:0)

当您使用>>输入字符串时,您只能获得输入的。用户的全名的其余部分位于输入缓冲器中,直到下一个输入操作,例如,输入整数。然后该文本作为整数规范无效。

而是使用getline来阅读一行文字。


顺便说一下,为了获得有关例如警告的警告用作语句的纯表达式(通常是错误的,代码中有一个例子),编译器的警告级别。使用Visual C ++使用/W4。使用g ++使用-Wall