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 に答える