1

これは私が実行したい非常に基本的なプログラムです。ユーザーは 3 つの亜種プログラムのいずれかを選択するよう求められます。これらのプログラムは後でコードに個別に表示されます。

たとえば、値が 1、2、3、4、および 5 の整数入力のみを受け入れたいとします。何らかの理由で、現在のプログラムは 1 入力のみを受け入れており、整数以外の入力に対して while ループが無期限に繰り返されています。

誰かがこれら 2 つの問題を見つけて、私にいくつかの修正を提案できますか? 前もって感謝します。

コード:

#include <iostream>

using namespace std;

int main() {
    int programversion;
    cout << "Which program version would you like to run? Basic [1], advanced [2], or advanced-variant [3]?\n";
    cin >> programversion;

    while (programversion != (1||2||3))
    {
        cout << "That is not a correct input integer - please choose [1], [2] or [3]\n";
        cin >> programversion;
    }

    if (programversion == 1)
    {
        cout << "You chose option 1.\n";
    }

    if (programversion == 2)
    {
        cout << "You chose option 2.\n";
    }

    if (programversion == 3)
    {
        cout << "You chose option 3.\n";
    }

    return 0;    
}
4

1 に答える 1

1

あなたの状態は

while ( programversion < 1 || programversion > 3 )
{
    ...
}

ループが実行され続ける理由whileは、現在の条件が常に true と評価され、ループが中断されないためです ( と入力した場合を除く1)。コードが正しく処理する唯一の条件を1||2||3評価するだけです。1独立した条件をテストする場合は、それらの条件を個別にテストするコードを実際に作成する必要があります。上記のコード スニペット (programversionが 1 から 3 の範囲内にあるかどうかをチェックする) を使用するか、while式内で複数のチェックを使用して、許容される各値を個別にテストします。例えば:

while ( programversion != 1 && programversion != 2 && ... )
{
    ...
}
于 2014-12-08T20:20:44.773 に答える