Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Validar que el valor ingresado es un numero y no letras, signos, etc..

Estas en el tema de Validar que el valor ingresado es un numero y no letras, signos, etc.. en el foro de C/C++ en Foros del Web. Código: printf("Ingrese un n%cmero entero: "); scanf("%d", &liNumero); if (liNumero < 48 || liNumero > 57) printf("\n\tError!, debe ingresar n%cmeros.\n", 163); Hola, tengo esto, según ...
  #1 (permalink)  
Antiguo 24/03/2015, 19:06
RGT
Usuario no validado
 
Fecha de Ingreso: noviembre-2008
Mensajes: 505
Antigüedad: 13 años, 1 mes
Puntos: 5
Pregunta Validar que el valor ingresado es un numero y no letras, signos, etc..

Código:
    printf("Ingrese un n%cmero entero: ");
    scanf("%d", &liNumero);

    if (liNumero < 48 || liNumero > 57)
        printf("\n\tError!, debe ingresar n%cmeros.\n", 163);
Hola, tengo esto, según el código ASCII (http://www.elcodigoascii.com.ar/) los números de 0 a 9 van de 48 a 57.

El problema es que siempre me da error, por qué, qué hago mal?.
  #2 (permalink)  
Antiguo 24/03/2015, 21:16
 
Fecha de Ingreso: julio-2012
Mensajes: 133
Antigüedad: 9 años, 6 meses
Puntos: 22
Respuesta: Validar que el valor ingresado es un numero y no letras, signos, etc..

Hola RGT.

Declara la variable de tipo char.
Código C:
Ver original
  1. {
  2.  char liNumero;
  3.   printf("Ingrese un n%cmero entero: ");
  4.   scanf("%c", &liNumero);   // ( "%c" )
  5.  
  6.   if (liNumero < 48 || liNumero > 57)  // mejor es: if (liNumero < '0' || liNumero > '9')
  7.    printf("\n\tError!, debe ingresar n%cmeros.\n", 163);
  8.   ...

Saludos.
  #3 (permalink)  
Antiguo 25/03/2015, 07:36
RGT
Usuario no validado
 
Fecha de Ingreso: noviembre-2008
Mensajes: 505
Antigüedad: 13 años, 1 mes
Puntos: 5
Respuesta: Validar que el valor ingresado es un numero y no letras, signos, etc..

Cita:
Iniciado por ecfisa Ver Mensaje
Hola RGT.

Declara la variable de tipo char.
Código C:
Ver original
  1. {
  2.  char liNumero;
  3.   printf("Ingrese un n%cmero entero: ");
  4.   scanf("%c", &liNumero);   // ( "%c" )
  5.  
  6.   if (liNumero < 48 || liNumero > 57)  // mejor es: if (liNumero < '0' || liNumero > '9')
  7.    printf("\n\tError!, debe ingresar n%cmeros.\n", 163);
  8.   ...

Saludos.
Hola, gracias por ayudarme.

Esa variable debe ser INT ya que necesito recibir numeros pero, quiero validar que no ingresen letras pero me da error.
  #4 (permalink)  
Antiguo 25/03/2015, 07:53
 
Fecha de Ingreso: octubre-2014
Ubicación: Madrid
Mensajes: 1.212
Antigüedad: 7 años, 3 meses
Puntos: 204
Respuesta: Validar que el valor ingresado es un numero y no letras, signos, etc..

Cita:
Iniciado por RGT Ver Mensaje
Esa variable debe ser INT ya que necesito recibir numeros pero, quiero validar que no ingresen letras pero me da error.
A ver, si necesitas discriminar entre letras y números... tienes que leer char y, posteriormente, convertir a int.

¿Por qué? Muy sencillo: int es un tipo de dato de 32 bits... es decir, únicamente almacena números. Si yo te pongo el número 34596596... ¿Sabrías decir si ese número viene porque se ha introducido ese número en concreto o es un error debido a una conversión rara de un texto a números? no, verdad?... y si pasa a ser el número -456023984 ??? pues eso.

El único que es capaz de distinguir un dígito numérico de cualquier otro es el tipo char (y, por extensión, char*), así que no te queda otra que leer caracteres del teclado, después hacer los chequeos oportunos sobre dichos caracteres y finalmente, si procede, hacer la conversión de string a int.

Un saludo.
  #5 (permalink)  
Antiguo 25/03/2015, 08:05
rdv316
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Validar que el valor ingresado es un numero y no letras, signos, etc..

Hola RGT.

Fijate si te sirve lo que yo utilizo en mis prácticas para validar ingresos de datos.-

Código C:
Ver original
  1. Int numero, ch;
  2. …………………………
  3. …………………………
  4. do{
  5.    system( “cls” );
  6.    printf( "\n\n Ingrese n%cmero............: ", 163);
  7.    ok = scanf( "%d", &numero ) == 1 && numero >= 1 && numero <= 60;
  8.    while ((ch = getchar()) != EOF && ch != '\n');
  9. }while(!ok);
  10. …………………………
  11. …………………………
De esta manera si ingresas un número menor a 1 o mayor a 60 no sale del bucle.-

Saludos.
Daniel

Etiquetas: letras, numero, signos, valor
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:54.