所以我环顾四周,但我显然要么找不到合适的地方,要么我误解了什么。
给出的指示是程序只能接受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);
}
答案 0 :(得分:4)
表达式
5.0>=vault1>=2.0
应该可以在Python中正常工作,但在C ++中它被解析为
(5.0>=vault1) >= 2.0
将第一次比较的结果与2.0进行比较,产生无意义的结果。
在C ++中将其改为
2.0 <= vault1 && vault1 <= 5.0
如果您在多个地方执行此检查,那么它可以帮助清晰度和可维护性定义适当命名的布尔函数。
答案 1 :(得分: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
}