|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Junior Member
Iscritto dal: Nov 2006
Messaggi: 15
|
[C] Isdigit & Isalpha
Ciao ragazzi, innanzitutto grazie mille per il vostro aiuto continuo!
![]() In poche parole ho queste due semplicissime funzioni ma non riesco ad utilizzarle! Il mio programma riceve un intero e lo controlla. Deve essere compreso tra 1 e 3... quindi voglio distinguere se è un numero, se è una lettera... o se non è nè l'uno e nè l'altro (ad esempio un punto). Il mio programma è il seguente: Codice:
#include <stdio.h> #include <ctype.h> main(){ int a, control=0; while(control==0){ printf("Inserisci il numero "); scanf("%d", &a); //preleva l'intero if (isdigit(a)!=0){ //se è un numero if( a>=1 && a<=3 ){ printf("scelta corretta\n\n"); control = 1; break; } else printf("Numero non corretto\n\n"); } //fine if isdigit if (isalpha(a)!=0) printf("e' una lettera\n\n"); if(isalnum(a)==0) printf("Non e' ne' una lettera e nemmeno un numero!!!\n\n"); } //fine while printf("Fine del programma\n\n"); system("pause"); } //fine main |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Mar 2006
Città: Bergamo
Messaggi: 2499
|
int isdigit( int ch );
passando un char char a; scanf("%c", &a); isdigit(a) se a è un carattere da '0' a '9' isdigit ritorna un valore diverso da 0 idem come sopra per isalpha |
![]() |
![]() |
![]() |
#3 |
Junior Member
Iscritto dal: Nov 2006
Messaggi: 15
|
thank's
Grazie vizz! Il problema della funzione è risolto... però è rimasto il problema del ciclo! Me ne fa più di uno... c'è ancora qualcosa che non va!
Ti mando il programma: Codice:
main(){ char a, control=0; while(control==0){ printf("Inserisci il numero "); scanf("%c", &a); //preleva l'intero if (isdigit(a)!=0){ //se è un numero if( a>=1 && a<=3 ){ printf("scelta corretta\n\n"); control = 1; break; } else printf("Numero non corretto\n\n"); } //fine if isdigit if (isalpha(a)!=0) printf("e' una lettera\n\n"); if(isalnum(a)==0) printf("Non e' ne' una lettera e nemmeno un numero!!!\n\n"); } //fine while printf("Fine del programma\n\n"); system("pause"); } //fine main |
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Mar 2006
Città: Bergamo
Messaggi: 2499
|
if( a>=1 && a<=3 ) non è possibile farlo confrontando un char.
qui dovresti convertire con atoi il char in un intero e poi confrontarlo. |
![]() |
![]() |
![]() |
#5 |
Junior Member
Iscritto dal: Nov 2006
Messaggi: 15
|
insomma non si può fare
A regà.... in finale non esiste modo per capire che tipo di lettera si è inserita in un intero???
|
![]() |
![]() |
![]() |
#6 | |
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
Codice:
char c; scanf ("%c", &c); if (isdigit (c)) { if (c >= '1' && c <= '3') printf ("Numero corretto\n"); else printf ("Numero non corretto\n"); } else if (isalpha (c)) printf ("Lettera\n"); else printf ("Altro carattere\n");
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
![]() |
![]() |
![]() |
#7 |
Junior Member
Iscritto dal: Nov 2006
Messaggi: 15
|
ecco cosa mi era sfuggito!
Grande and! Fortuna che ci sei te, SEI UN MAGO!!!
Mi era sfuggito che i numeri bisognava metterli tra le virgolette! hehehehehe, grazie mille caro! ![]() |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 11:22.