Accepting user input in a while loop

16,696

Solution 1

I'd make 2 changes in your code:

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

And, just before the "else" (to prevent the error message when exiting the program):

else if (userInput == 'e' or userInput == 'E')
             {
                break;
             }

Solution 2

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

the 'or' version is always true

Share:
16,696
Tydis
Author by

Tydis

Updated on July 14, 2022

Comments

  • Tydis
    Tydis almost 2 years

    I'm trying to create a simple temperature conversion program that allows the user to convert temperatures as many times as they want until they decide to end the program by entering the letter 'e'. Everything else in the code works except the part where the user enters the letter 'e'. If I take the last else statement out, the program just starts at the beginning of the loop again. If I leave the else statement in, when the user enters the letter 'e', the else statement thinks that it is invalid input and does not end the program.

     #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;
    }