Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - do while
Forum - C/C++ - do while

Avatar
antoniodl (Normal User)
Newbie


Messaggi: 1
Iscritto: 04/02/2017

Segnala al moderatore
Postato alle 16:18
Sabato, 04/02/2017
perche nel do while se a una variabile int compresa tra 1 e 31 da il valore di una lettere mi ripete all' infinito inserisci una variabile tra 1 e 31 senza fermarsi ?


antoniodl ha allegato un file: Cattura.JPG (57923 bytes)
Clicca qui per guardare l'immagine
PM Quote
Avatar
Template (Member)
Pro


Messaggi: 175
Iscritto: 09/12/2015

Segnala al moderatore
Postato alle 16:32
Sabato, 04/02/2017
Riporta il codice qui mettendolo tra i tag CODE, spiega cosa dovrebbe fare... e poi vediamo: non è per sfiducia, ma nessuno con un minimo di cervello aprirebbe mai un'immagine ignota caricata da uno sconosciuto.

Ultima modifica effettuata da Template il 04/02/2017 alle 16:34


"Nel curriculum scrivete quello che sapete fare... e anche quello che non sapete fare! Tipo: "Già vescovo di Cracovia, partecipai alla Coppa America, vincendola!""
[...]
"Sto giocando al piccolo Dio e mi sta venendo pure alla grande."
PM Quote
Avatar
a_butta (Member)
Expert


Messaggi: 578
Iscritto: 16/03/2010

Segnala al moderatore
Postato alle 16:57
Sabato, 04/02/2017
Testo quotato

Postato originariamente da antoniodl:

perche nel do while se a una variabile int compresa tra 1 e 31 da il valore di una lettere mi ripete all' infinito inserisci una variabile tra 1 e 31 senza fermarsi ?



Non ho testato il codice, ma a sentimento una lettera è letta come char attraverso la codifica ASCII e quindi assume un valore numerico sicuramente maggiore di 31. Ergo, il ciclo continua fintantochè il numero non è compreso tra quei due estremi.

Comunque sia, correggi quanto affermato da Template. Diciamo che comunque la fiducia è data dal fatto che il link punta ad un allegato al forum stesso.

EDIT: Ok ho testato il programmino e ho notato che non è esattamente quello il problema. Intanto non capisco la presenza del break prima del cin, ad occhio deve essere eliminato. Avendo dichiarato la variabile giorno come int, il programma si aspetta che tu inserisca una variabile intera. Ho cercato un po' in giro su Internet per capire come effettivamente cin lavori, ma per questi dettagli aspetto qualcuno molto più competente di me; a quanto mi è parso di capire, la funzione (dovrebbe comunque dipendere dal compilatore e dall'implementazione) lavora su un thread a parte; quando esso va in errore credo non lanci una eccezione, ma semplicemente blocca la funzione cin. La variabile giorno viene posta a 0 e resta relegata a tale valore in quanto il cin è bloccato -> il ciclo non ha mai fine. Una soluzione semplice è quella di dichiarare giorno come char (tanto deve essere un numero inferiore di 32), così una lettera viene semplicemente interpretata come un carattere tra >32 e 127. Con un po' più di lavoro, sarebbe meglio far inserire sempre e comunque delle stringhe, verificarne la presenza di numeri e al limite lanciare un errore a video.

Ultima modifica effettuata da a_butta il 04/02/2017 alle 17:29


PM Quote
Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 17:19
Sabato, 04/02/2017
Non conosco bene il c++, ma quel break??

Codice sorgente - presumibilmente Plain Text

  1. cout>>...
  2. break;
  3. cin<<....



PM Quote
Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 17:20
Sabato, 04/02/2017
Doppio Post - Scusate

Ultima modifica effettuata da il 04/02/2017 alle 17:21
PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 5473
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 17:23
Sabato, 04/02/2017
Subito dopo la cin, cancella eventuali input sbagliati, aggiungendo

Codice sorgente - presumibilmente Plain Text

  1. cin.clear();
  2. cin.ignore(numeric_limits<streamsize>::max(),'\n');


Ultima modifica effettuata da nessuno il 04/02/2017 alle 17:23


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
PM Quote
Avatar
a_butta (Member)
Expert


Messaggi: 578
Iscritto: 16/03/2010

Segnala al moderatore
Postato alle 17:30
Sabato, 04/02/2017
Ho modificato la risposta di cui sopra. Credo nessuno abbia suggerito una soluzione più efficace :asd:


PM Quote