Como validar si un dato es letra o numero en c/c++

Estoy realizando un programa que convierta números de binario a octal, hexadecimal, binario etc... Entre todos los sistemas numéricos y trato de validar por ejemplo cuando es binario el numero que voy a convertir que no introduzcan letras.. Pero lo he intentado validar con
Isnan
Isdigit
Isalpha
y siempre me pone k es letra!... =S
Y con isnan me deja validar solo una ocasión... Más no una segunda porque me marca error..
Este es un segmento del pgma que estoy haciendo
case '1':
                          cout<<"\n:::Conversor DECIMAL a BINARIO:::"<<endl;
                          cout<<"Introduza un numero Decimal: ";
                          scanf("%lu",&n);
                          if(isdigit(n)){
                          cout<<"Numero Binario correspondente: ";
                          binario(n);
                          cout<<"\nPresione la tecla >>Enter<< para regresar al menu"<<endl;
                          }
                          else
                          cout<<"error"<<endl;
                          break;
case '1':                          cout<<"\n:::Conversor DECIMAL a BINARIO:::"<<endl;                          cout<<"Introduza un numero Decimal: ";                          scanf("%lu",&n);                          if(isdigit(n)){                          cout<<"Numero Binario correspondente: ";                          binario(n);                          cout<<"\nPresione la tecla >>Enter<< para regresar al menu"<<endl;                          }                          else                          cout<<"error"<<endl;                          break;

1 Respuesta

Respuesta
1
Si haces scanf("%lu",&n); no puedes leer caracteres sino sólo números. Los caracteres se desprecian, no los lee. Lo que pasa es que no te avisa de que no los ha leído sino que la variable n se quedará con el valor anterior sin leer nada.
Para validar la entrada la tienes que leer como caracteres y después ver si son caracteres alfanuméricos o no. Si quieres leer caracteres prueba con scanf("%c",&n).
Saludos
Y si quieres aprender a programar, consulta: www.cartagena99.com
Kepa Ríos Alday

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas