2016-10-07 3 views
-1

ユーザーが入力した入力をテストしようとしているため、プログラムが中断できません。私が使用している行がある:入力が特定のタイプで特定の範囲にあるかどうかをチェック

while (check != 0){ 
    cout << "Please enter a number 1 - 4 (area of: circle, rectangle, triangle or quit)" << endl; 
    cin >> response; 


    if ((isdigit(response)) && ((response >= 1) && (response <= 4))){ 
     check = 0; 

    } 
    else{ 
     cout << "You did not enter a valid digit (1 - 4)" << endl; 
     check = 1; 
    } 

} // End of while loop 

私は何をしようとしている、いくつかの理由のすべての値を入力する(特に整数)の数字でもあるかどうかを確認し、1と4の範囲内であり、私はこのメソッドを使用して無効と考えて入力します。私が探している希望の結果を得るために、私は何を変えるべきか、代わりに何をすべきですか? (したがって、入力が整数かどうか、そしてその整数が1から4(1と4を含む)の間であるかどうかをチェックする)。

+0

あなたのアプローチで実際に何がうまくいかないのですか? –

+0

'check'とは何ですか? '応答'とは何ですか?ストリームが[ブール式](http://en.cppreference.com/w/cpp/io/basic_ios/operator_bool)で使用され、成功したかどうかを確認できます。最後のビットは '応答'を 'int'として宣言し、if(!(cin >> response)||!is_between(response、1,4))'のようなことをすることを意味します。 –

+0

'while(1)'というだけでなく、ユーザ入力が有効なときに 'break'文を使うのはなぜですか? –

答えて

1

responseと仮定するとタイプcharのですが、あなたは文字が'1''4'は、ない整数14定数定数を使用する必要があります。

if ((isdigit(response)) && ((response >= '1') && (response <= '4'))){ 
+0

ああありがとう。私はisdigitがchar値のためにあることを完全に忘れてしまった。私は√10分で質問します。 – user3657449

0

if (response >= '1' && response <= '4')すべてが必要です。入力された文字が正しい範囲にある場合は、数字でなければならないので、isdigitのテストは必要ありません。余分な括弧もありません。

関連する問題