|
|||||||
|
|
|
![]() |
|
|
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: 00:25.




















