0

コードの do-while メニューを書いています。switch ステートメントを使用します。私が持っている質問はwhileに関するものです。ユーザーが大文字の A - F または小文字の a - f を入力したときにのみコードを実行する必要があります。現在、while ステートメントは大文字でのみ機能します。どういうわけか、小文字でも機能させる必要があります。

コードは次のとおりです。

//display menu
do
{
    cout << "A. Get the number of values entered \n"
    << "B. Get the sum of the vaules \n"
    << "C. Get the average of the values \n"
    << "D. Get the largest number \n"
    << "E. Get the smallest number \n"
    << "F. End the program \n"
    << "Enter your choice: ";
    cin >> choice;

    while (choice < 'A' || choice >'F')
    {
        cout << "Please enter a letter A through F: ";
        cin >> choice;
    }
    if (choice != 'F' || 'f')
    {
        switch (choice)
        {
            case 'A':
            case 'a': cout << "Number of numbers is: " << numCount << endl;
                break;
            case 'B':
            case 'b': cout << "Sum of numbers is: " << sum << endl;
                break;
            case 'C':
            case 'c': cout << "Average of numbers is: " << average << endl;
                break;
            case 'D':
            case 'd' : cout << "Max of numbers is: " << max << endl;
                break;
            case 'E':
            case 'e': cout << "Min of numbers is: " << min << endl;
                break;
            default: cin >> c;
        }

    }
    else      
    {

        cin >> c;
    }
}

while (choice !='F' || 'f');

return 0;
4

2 に答える 2

3

まず条件choice != 'F' || 'f'が悪い。正しい状態は((choice != 'F') && (choice != 'f')).

小文字で作業するには、この条件をwhileループで使用できます。

while (! ((choice >= 'a' && choice <= 'f') || (choice >= 'A' && choice <= 'F')))

または使用toupper/tolower関数からctype.h

于 2013-10-19T19:21:44.687 に答える
0

バージョン 1

while ( (choice < 'a' || choice > 'f') && (choice < 'A' || choice > 'F') )

バージョン 2

while(choice < 'A' && choice > 'F')
{
    std::cin>>choice;
    choice = toupper(choice);
}

それが役立つことを願っています

于 2013-10-19T21:00:04.317 に答える