3

私のコードでは、「Q」または「q」を入力しても、プログラムがメニューをループし続けるという問題があります。ここで何が問題になっていますか?コードは次のとおりです。

{
    char selection;
    do {
        cout << "Add a county election file         A" << endl;
        cout << "Show election totals on screen     P" << endl;
        cout << "Search for county results          S" << endl;
        cout << "Exit the program                   Q" << endl;
        cout << "Please enter your choice: ";
        cin >> selection;
    } while ((selection != 'Q' || selection != 'q'));
    return 0;
}
4

4 に答える 4

11

&&テストでは、Or( )演算子ではなく、And()演算子を使用します||。それ以外の場合、とのいずれかselection != 'Q'selection != 'q'常に真になり、ループが終了することはありません。

于 2012-10-28T15:37:23.313 に答える
3

指摘したように、||はあなたの要件を満たしていません。&&演算子 を使用する必要があります。

を押すqと、これが状況です。

(selection != 'Q' || selection != 'q')
|---------------|    |--------------|
    true                  false

を押すQと、これが状況です。

(selection != 'Q' || selection != 'q')
|---------------|    |--------------|
    false                  true

ループは次のようになります。

while((selection != 'Q' && selection != 'q'));
于 2012-10-28T15:38:35.407 に答える
2

代わりにこれを試してください:

} while((selection != 'Q' && selection != 'q'));
于 2012-10-28T15:40:15.973 に答える
0

を使用しtoupper()ます。

これを行う場合 while ( toupper(selection) != 'Q' )、大文字と小文字の両方をチェックする必要はありません。

#include <iostream>
#include <stdio.h>
using namespace std;

int main(void)
{



    char selection;
    do {
        cout << "The Menu" << endl;
        cout << "____________________________________" << endl;
        cout << "Add a county election file         A" << endl;
        cout << "Show election totals on screen     P" << endl;
        cout << "Search for county results          S" << endl;
        cout << "Exit the program                   Q" << endl;
        cout << "____________________________________" << endl;
        cout << "Please enter your choice: ";
        cin >> selection;
    } while ( toupper(selection) != 'Q'  );



  cout<<" \nPress any key to continue\n";
  cin.ignore();
  cin.get();

   return 0;
}
于 2012-10-28T16:06:38.043 に答える