[C++] Condizione do while problema

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
zzari
Prode Principiante
Messaggi: 24
Iscrizione: sabato 17 novembre 2012, 11:18
Distribuzione: Ubuntu 12.04 LTS

[C++] Condizione do while problema

Messaggio da zzari »

Ciao a tutti!
Sto cercando di implementare un giochino dove bisogna inserire 2 coordinate numeriche (int righe, int colonne) comprese tra 0 e 10 ad esempio.
Quello che vorrei fare è questo praticamente:

Inserisci le coordinate: 4 C
*Errore, il numero delle colonne deve essere un intero

Inserisci le coordinate: 22 9
*Errore, il numero delle righe e colonne deve essere compreso tra 0 e 10

Inserisci le coordinate: 8 6

Le coordinate inserite sono (8,6).

Io ho pensato ad un ciclo do while del tipo:

Codice: Seleziona tutto

do{
    cout<<"Inserire il numero di righe e colonne ";
    cin>>r>>c;
        if (cin.fail())
	{
        cout << "ERROR: Il numero delle righe e colonne deve essere un numero intero." << endl << endl;

	}
        if ((r<0 || r>10) || (c<0 || c>10)
	{
        cout << "ERROR: Il numero delle righe e colonne deve essere un numero intero tra 0-10." << endl << endl;

	}
    cout<<endl;
}
while (((r<0 || r>10)||(c<0 || c>10)) || cin.fail());
Purtroppo se inserisco 2 numeri funziona senza problemi, anche per il controllo se sono minori o maggiori di 10... ma se inserisco una lettera va in LOOP infinito...
Qualche idea di come implementare il controllo sulle coordinate inserite o come corregere il mio codice!? :)

il succo è.. come fare a controllare che quello inserito da tastiera non sia un numero intero?!
Avatar utente
cobra90nj
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 280
Iscrizione: venerdì 27 luglio 2007, 1:34
Località: NeT

Re: [C++] Condizione do while problema

Messaggio da cobra90nj »

hai definito la variabile nella quale inserisci la lettera come "string" o sono entrambe intere? :)
Avatar utente
crap0101
Rampante Reduce
Rampante Reduce
Messaggi: 8242
Iscrizione: martedì 30 ottobre 2007, 6:33
Desktop: LXDE
Distribuzione: Ubuntu 18.04.1 LTS
Sesso: Maschile
Località: TO
Contatti:

Re: [C++] Condizione do while problema

Messaggio da crap0101 »

E' lo stream che resta sporco. btw, usare

Codice: Seleziona tutto

cin >> qualcosa
non è il metodo ideale per prendere input dall'utente, in ogni caso dovresti controllare che non ci siano stati errori (non solo con fail()), pulire lo stream e resettare le variabili che utilizzi.
http://www.gnu.org/ http://boinc.berkeley.edu/ http://www.python-it.org/
- Ricorda le ultime parole di suo padre: «Sta' alla larga dalle chiese, figlio. La sola cosa per cui hanno la chiave è il merdaio. E giurami che non porterai mai un distintivo della legge» - W.S. Burroughs
zzari
Prode Principiante
Messaggi: 24
Iscrizione: sabato 17 novembre 2012, 11:18
Distribuzione: Ubuntu 12.04 LTS

Re: [C++] Condizione do while problema

Messaggio da zzari »

cobra90nj ha scritto:hai definito la variabile nella quale inserisci la lettera come "string" o sono entrambe intere? :)
"r" e "c" sono definite come intere appunto perchè voglio che vengano inserite solo numeri interi, no float e no char..
crap0101 ha scritto:E' lo stream che resta sporco. btw, usare

Codice: Seleziona tutto

cin >> qualcosa
non è il metodo ideale per prendere input dall'utente, in ogni caso dovresti controllare che non ci siano stati errori (non solo con fail()), pulire lo stream e resettare le variabili che utilizzi.
consigli di usare un getline() e prendere una stringa in input da convertire con "atoi()"? Pero come potrei fare un controllo completo per sapere se l'utente ha inserito correttamente dei numeri tra 0-10 oppure stringhe di caratteri a caso che non vanno bene?
Avatar utente
crap0101
Rampante Reduce
Rampante Reduce
Messaggi: 8242
Iscrizione: martedì 30 ottobre 2007, 6:33
Desktop: LXDE
Distribuzione: Ubuntu 18.04.1 LTS
Sesso: Maschile
Località: TO
Contatti:

Re: [C++] Condizione do while problema

Messaggio da crap0101 »

è una soluzione... puoi fare anche come stai facendo ora, però devi appunto aggiungere i controlli del caso.
http://www.gnu.org/ http://boinc.berkeley.edu/ http://www.python-it.org/
- Ricorda le ultime parole di suo padre: «Sta' alla larga dalle chiese, figlio. La sola cosa per cui hanno la chiave è il merdaio. E giurami che non porterai mai un distintivo della legge» - W.S. Burroughs
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 2 ospiti