Salve, è il primo post sul forum, spero di non aver aperto un topic di cui si è già parlato in passato (ho cercato girando un po' le pag ed utilizzando il "cerca" ma non ho trovato niente di soddisfacente), e colgo l'occasione per salutare tutti.
Ho scritto un piccolo programmino che funge da convertitore °Celsius - °Fahrenheit tanto per fare pratica, ma riscontro in esecuzione un errore al do...while del case 3 dello switch, quello che richiede la conferma all'uscita. In sostanza, posso dare alla variabile exit qualsiasi carattere che nessuno di questi mi fa uscire dal ciclo, inclusi quelli che dovrebbero.
#include <iostream>
using namespace std;
int main()
{
int operation;
bool pass = true;
char exit;
double celsius, fahrenheit;
cout << endl << "°F <--> °C by Pr0gMa v1.0" << endl << endl;
do
{
cout << "1) °C to °F" << endl;
cout << "2) °F to °C" << endl;
cout << "3) Exit" << endl;
cout << endl << "#: ";
cin >> operation;
switch (operation)
{
case 1 :
cout << endl << "°C #: ";
cin >> celsius;
cout << "°F #: " << (9 * celsius) / 5 + 32 << endl << endl;
break;
case 2 :
cout << endl << "°F #: ";
cin >> fahrenheit;
cout << "°C #: " << (5 * (fahrenheit - 32)) / 9 << endl << endl;
break;
case 3 :
do
{
cout << endl << "Are you sure? [Y-y / N-n] $: ";
cin >> exit;
cin.ignore();
if (exit == 'y' || exit == 'Y')
pass = false;
}
while (exit != 'y' || exit != 'Y' || exit != 'n' || exit != 'N');
break;
default :
cout << endl << "Unknown operation, try again." << endl << endl;
break;
}
}
while (pass);
cout << endl << "Ok, bye!" << endl << endl;
return 0;
}
Probabilmente l'utilizzo della variabile bool è un po' ridondante, ma lo lascio così per fare un po' di pratica. In ogni caso, questo è l'output del programma con il problema incriminato:
°F <--> °C by Pr0gMa v1.0
1) °C to °F
2) °F to °C
3) Exit
#: 3
Are you sure? [Y-y / N-n] $: y
Are you sure? [Y-y / N-n] $: Y
Are you sure? [Y-y / N-n] $: n
Are you sure? [Y-y / N-n] $: N
Are you sure? [Y-y / N-n] $: d
Are you sure? [Y-y / N-n] $: D
Are you sure? [Y-y / N-n] $: 3
Are you sure? [Y-y / N-n] $: 9
Are you sure? [Y-y / N-n] $: !
Are you sure? [Y-y / N-n] $:
Insomma, non esce dal while... suggerimenti?
Grazie anticipatamente