|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Junior Member
Iscritto dal: Aug 2005
Messaggi: 21
|
[C]||[C++] confrontare:intero se è un carattere
salve a tutti,
volevo sapere come posso confrontare in un ciclo do while se n (int) è un carattere, se lo è il ciclo do while si ripete. esempio: do{ printf("\nimmettere le persone che entrano al %d spettacolo:" ,loop); scanf("%d",&n); } while(n=getchar,isalpha(n)); //qui ripete il ciclo ma n assume il valore di carattere(perche inizializzato a "n = getchar") quindi per poi (una volta usciti dal ciclo)visionare il contenuto della variabile n (interi senza segno) è pressoche impossibile, difatti n mi da valori sballati. Quindi come posso confrontare se n è un carattere(in un ciclo do while) in maniera differente? grazie a tutti anticipatamente |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Nov 2005
Città: Texas
Messaggi: 1722
|
Da quello che ho capito, il ciclo ti serve per fare un controllo di validita' sui dati in ingresso.
A dirla tutta, il controllo andrebbe fatto in direzione opposta: e' molto piu' sicuro leggere una stringa, verificare che contenga un numero e continuare. Il ciclo da te proposto contiene qualche errore di sintassi, ma l'errore di fondo e' l'uso della scanf ("%d", &n), poiche' essa potra' leggere solo valori numerici! Nel caso l'utente sbagli, ed inserisca dei valori non corretti (come apputno le stringhe di caratteri non numerici), il comportamento di tale istruzione e' indeterminato. Addirittura su molti sistemi l'applicazione va in ciclo infinito. Ricapitolando: - nel ciclo while, per prima cosa devi leggere una stringa; - se la stringa contiene valori numerici, a cui sei interessato, allora puoi convertirla in numero intero e terminare l'esecuzione del ciclo; - nel caso i valori non siano corretti, continuerai a ciclare. high flying Sottovento |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 12:24.



















