0

所以我环顾四周,但显然我要么没有找对地方,要么我误解了一些东西。

给出的指示是程序只能接受 2.0 到 5.0 之间的拱顶高度值。我觉得这与我的 if 条件有关,但我不知道如何纠正它。

当我在调试期间输入高度时,它会跳转到我的 else 语句,并且不给我机会重新输入新的输入。

//Retrieving name and first vault and date
cout << "Please enter the name of the pole vaulter.\n";
getline(cin, name);
cout << "Please enter the height of the first vault attempt.\n";
cin >> vault1;
if(5.0 >= vault1 >= 2.0) {
    cout << "What date was this vault accomplished?\n";
    getline(cin, date1);
} else {
    cout << "Only jumps between 2.0 meters and 5.0 meters are valid inputs.       Please enter the height of the first vault attempt.\n";
    cin >> vault1;
    cout << "What date was this vault accomplished?\n";
    getline(cin, date1);
}
4

2 回答 2

4

表达方式

5.0>=vault1>=2.0

在 Python 中应该可以正常工作,但在 C++ 中它被解析为

(5.0>=vault1) >= 2.0

其中第一次比较的结果与 2.0 进行比较,得出一个无意义的结果。

在 C++ 中,将其写为

2.0 <= vault1 && vault1 <= 5.0

如果您在多个地方执行此检查,那么定义一个适当命名的布尔函数有助于提高清晰度和可维护性。

于 2013-02-09T02:06:33.010 回答
1

C++ 不支持数学表达式。

改变:

if (5.0>=vault1>=2.0)

到:

if (vault1 > 5.0 || valut1 < 2.0)
{
   // invalid vault1
}
else
{
   // valid vault1
}

或者,如果您想使用&&

if (vault1 <= 5.0 && valut1 > 2.0)
{
   // valid vault1
}
于 2013-02-09T02:04:58.840 回答