Salve gente, ho scritto un programmino in c++ per capire l'uso delle enumerazioni; eccolo qui:
codice:
#include <iostream>
using namespace std;
int main()
{
typedef enum colore{giallo, rosso, blu};
colore c1, c2;
int choose;
cout << "Inserisci il colore:\n" << endl;
cout << "1 - giallo\n2 - rosso\n3 - blu\n";
cin >> choose;
do {
switch(choose){
case 1:
c1 = giallo;
cout << c1 << endl;
break;
case 2:
c1 = rosso;
cout << c1 << endl;
break;
case 3:
c1 = blu;
cout << c1 << endl;
break;
default: cout << "Selezione errata; riprova\n";
cin >> choose;
}
}while(choose != 1 && choose != 2 && choose != 3);
cout << c1 << endl;
c2 = c1;
cout << c2 << endl;
return 0;
}
Non presenta errori durante la compilazione(0 errori e 0 warning), tuttavia mentre lo eseguo accadono cose strane:
se provo a inserire un valore di choose compreso fra quelli che mando a schermo(1, 2, o 3), il programma mi stampa senza alcun problema i valori di c1 e c2 corrispondenti. Se invece provo a inserire volutamente un dato sbagliato(per esempio 5), il progamma mi invita a ripetere l'operazione, ma al momento dell'inserimento del dato esatto, il debug mi dice che alla riga
codice:
cout << c1 << endl;
sto usando la variabile c1 senza averla definita. Nella fattispecie assegna a c1 l'anormale valore di -85899346. Come posso risolvere questo problema?
La cosa strana è che se inserisco il valore choose esatto al primo tentativo il programma si chiude correttamente, mentre se sbaglio al primo tentativo e azzecco al secondo mi dà errore!