2

私は、ユーザーが文字「e」を入力してプログラムを終了するまで、何度でも温度を変換できる簡単な温度変換プログラムを作成しようとしています。ユーザーが文字「e」を入力する部分を除いて、コード内の他のすべてが機能します。最後のelseステートメントを削除すると、プログラムはループの最初から再開します。elseステートメントをそのままにしておくと、ユーザーが文字「e」を入力すると、elseステートメントはそれが無効な入力であると見なし、プログラムを終了しません。

 #include <iostream>

using namespace std;

float celsiusConversion(float cel){     // Calculate celsius conversion
    float f;

    f = cel * 9/5 + 32;
    return f;
}

float fahrenheitConversion(float fah){  // Calculate fahrenheit conversion
    float c;

    c = (fah - 32) * 5/9;
    return c;

}
int main()
{
    char userInput;

        while (userInput != 'e' or userInput != 'E')    // Loop until user enters the letter e
        {

            cout << "Please press c to convert from Celsius or f to convert from Fahrenheit. Press e to end program." << endl;
            cin >> userInput;


            if (userInput == 'c' or userInput == 'C') // Preform celsius calculation based on user input 
                {
                    float cel;
                    cout << "Please enter the Celsius temperature" << endl;
                    cin >> cel;
                    cout << cel << " Celsius is " << celsiusConversion(cel) <<  " fahrenheit" << endl;
                }
            else if (userInput == 'f' or userInput == 'F')  // Preform fahrenheit calculation based on user input
                {
                    float fah;
                    cout << "Please enter the Fahrenheit temperature" << endl;
                    cin >> fah;
                    cout << fah << " Fahrenheit is " << fahrenheitConversion(fah) << " celsius" << endl;
                }
            else    // If user input is neither c or f or e, end program
                {
                    cout << "Invalid entry. Please press c to convert from Celsius, f to convert from Fahrenheit, or e to end program." << endl;
                }
        }
    return 0;
}
4

2 に答える 2

1

もしかしてwhile(userInput != 'e' && userInput != 'E')

'または'バージョンは常にtrueです

于 2012-11-12T17:56:12.093 に答える
0

コードに2つの変更を加えます。

while (userInput != 'e' && userInput != 'E')

そして、「else」の直前(プログラム終了時のエラーメッセージを防ぐため):

else if (userInput == 'e' or userInput == 'E')
             {
                break;
             }
于 2012-11-12T18:05:04.493 に答える