C - codice ascii per scrivere solo numeri
Ho scritto questo semplice codice con l'intenzione di avere ok! Se ho immesso da tastiera un numero e no! Se invece digitò un qualsiasi altro carattere. Qualcuno potrebbe aiutarmi a correggerlo? Grazie mille in anticipo !
#include
int main (void) {
int a;
int count ;
do {
printf ("inserisci numero = " , a );
scanf ( "%d" , &a ) ;
count ++; // COUNT E' UN CONTATORE !!!!!!!!
char b=a;
{
if ( b > '48' && b < '57' )
printf("Ok \n");
else
printf ( " no ! \n ");
}
}
while ( count < 3 ); // in questo modo stabilisco che posso mettere qualsiasi numero intero MA CHE IL NUMERO MASSIMO DI ITERAZIONI
// E' 3!!!!!!! Se avessi messo come condizione del while (a<3) allora il numero massimo digitabile sarebbe stato due
// MA A DIFFERENZA DEL COUNT , il numero di iterazioni sarebbe stato infinito ! Si sarebbe fermato solo con "2"
return 0; }
#include
int main (void) {
int a;
int count ;
do {
printf ("inserisci numero = " , a );
scanf ( "%d" , &a ) ;
count ++; // COUNT E' UN CONTATORE !!!!!!!!
char b=a;
{
if ( b > '48' && b < '57' )
printf("Ok \n");
else
printf ( " no ! \n ");
}
}
while ( count < 3 ); // in questo modo stabilisco che posso mettere qualsiasi numero intero MA CHE IL NUMERO MASSIMO DI ITERAZIONI
// E' 3!!!!!!! Se avessi messo come condizione del while (a<3) allora il numero massimo digitabile sarebbe stato due
// MA A DIFFERENZA DEL COUNT , il numero di iterazioni sarebbe stato infinito ! Si sarebbe fermato solo con "2"
return 0; }
Risposte
Innanzi tutto sarebbe meglio se utilizzassi l'opportuno ambiente code per scrivere il codice. Visto così è poco leggibile.
Che problema riscontri nel codice?
Che problema riscontri nel codice?
La scrittura '48' non ha senso, e neanche '57'. Se vuoi confrontare con il codice allora devi scrivere 48 e 57... Oppure, un po' meglio, scrivere '0' e '9' mettendo però >= e <=.
Detto questo usare il codice ascii è un modo poco portabile per farlo, soprattutto se come fai tu introduci direttamente i codice invece di farne riferimento implicito. Il modo portabile e corretto per riconoscere se un carattere è una cifra è la funzione isdigit.
contenuta in ctype.h.
Per informazioni su questo aspetto puoi vedere su questa pagine wiki.
http://en.wikipedia.org/wiki/C_character_classification
Detto questo usare il codice ascii è un modo poco portabile per farlo, soprattutto se come fai tu introduci direttamente i codice invece di farne riferimento implicito. Il modo portabile e corretto per riconoscere se un carattere è una cifra è la funzione isdigit.
contenuta in ctype.h.
Per informazioni su questo aspetto puoi vedere su questa pagine wiki.
http://en.wikipedia.org/wiki/C_character_classification