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

[SOLUCIONADO] ¿Cómo validar si es caracter o entero?

Estas en el tema de ¿Cómo validar si es caracter o entero? en el foro de C/C++ en Foros del Web. Hola a todos, soy nuevo en el foro y en la programación también. Les agradecería su ayuda para una duda que tengo. Estoy haciendo un ...
  #1 (permalink)  
Antiguo 01/07/2013, 21:26
 
Fecha de Ingreso: julio-2013
Mensajes: 4
Antigüedad: 10 años, 10 meses
Puntos: 0
¿Cómo validar si es caracter o entero?

Hola a todos, soy nuevo en el foro y en la programación también. Les agradecería su ayuda para una duda que tengo.

Estoy haciendo un programa, en el cual necesito introducir números, todo bien hasta ahí. Pero me piden que si el usuario ingresó un caracter mande mensaje que diga que no es válido, no tengo idea de cómo hacer eso. Les agradezco de antemano.
  #2 (permalink)  
Antiguo 02/07/2013, 09:26
Avatar de _Lucifer_  
Fecha de Ingreso: junio-2006
Mensajes: 1.662
Antigüedad: 17 años, 10 meses
Puntos: 28
Respuesta: ¿Cómo validar si es caracter o entero?

Lo lees como una cadena de caracteres y haces la validaciones correspondientes, en caso de ser un número válido haces la conversión respectiva
__________________
Si crees que no tiene sentido, etonces probablemente lo tenga... :arriba:
  #3 (permalink)  
Antiguo 02/07/2013, 13:12
 
Fecha de Ingreso: julio-2012
Mensajes: 133
Antigüedad: 11 años, 9 meses
Puntos: 22
Respuesta: ¿Cómo validar si es caracter o entero?

Hola.

Si estas leyendo caracter a caracter, podes verificar lo ingresado con la función isdigit o usando el preprocesador:
Código C:
Ver original
  1. ...
  2. #define ISNUM(X) X >='0' && X <='9'
  3. ...
  4. {
  5.   char ch;
  6.   ...
  7.   if (isdigit(ch))...
  8.  
  9.   //o,
  10.   if (ISNUM(ch))...
  11.   ...
No especificas si estas trabajando en C o C++. Para usar isdigit con el primero tenes que incluir ctype.h, con el segundo locale

Saludos
  #4 (permalink)  
Antiguo 02/07/2013, 18:05
Avatar de re_jill_123  
Fecha de Ingreso: mayo-2013
Ubicación: México
Mensajes: 9
Antigüedad: 11 años
Puntos: 0
Sonrisa Respuesta: ¿Cómo validar si es caracter o entero?

Algo asi...

#include <stdio.h>
main {
int numero = 0, residuo = 0;
printf("Introduce Numero: "); scanf("%d",&numero);
res=numero/numero;
if (res == 1)
printf("Es un número válido");
else
printf("Es un caractér , numero inválido");
return (0);
}

Si existe error en la sintaxis, es porque el lenguaje lo use hace como 10 años.. pero la lógica es que si es divisible entre si mismo, es por que es un numero, de lo contrario no lo es.. saludos.
  #5 (permalink)  
Antiguo 02/07/2013, 21:45
 
Fecha de Ingreso: julio-2013
Mensajes: 4
Antigüedad: 10 años, 10 meses
Puntos: 0
Respuesta: ¿Cómo validar si es caracter o entero?

_LUCIFER_ Agradezco muchísimo tu ayuda, pero no te entendí prácticamente nada =/, soy bastante nuevo. Mil gracias de cualquier manera.
  #6 (permalink)  
Antiguo 02/07/2013, 21:48
 
Fecha de Ingreso: julio-2013
Mensajes: 4
Antigüedad: 10 años, 10 meses
Puntos: 0
Respuesta: ¿Cómo validar si es caracter o entero?

ecfisa, no entendí la parte del #define, pero lo de "isdigit" ¡me ayudó bastante!, ¡muchísimas gracias!.

re_jill_123, entendí tu código perfecto, y me parece una buena lógica, muy buen razonamiento.

¡Muchas gracias a todos, son de gran ayuda!
  #7 (permalink)  
Antiguo 03/07/2013, 17:02
 
Fecha de Ingreso: diciembre-2011
Ubicación: CABA
Mensajes: 433
Antigüedad: 12 años, 4 meses
Puntos: 94
Respuesta: ¿Cómo validar si es caracter o entero?

Hola! si no me equivoco el codigo de re_jill_123 genera un error en ejecucion, es decir cuando se ingresa un caracter el programa explota ¿por que? cuando se ingresa algo q no sea un entero, scanf genera un error y la variable numero no se altera por lo tanto en la division estarias haciendo cero sobre cero lo cual no se puede(indeterminacion si estariamos en matematica xD).. Igual cuando probaste el codigo no te genero ningun error????


Lo que dice lucifer es algo asi creo:
Código C:
Ver original
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int main() {
  5.    
  6.     char sNum[20];
  7.     int num;
  8.    
  9.     printf("Ingrese numero\n");
  10.     scanf("%s",sNum);
  11.     num=atoi(sNum); /* atoi convierte el numero ingresado como cadena en entero
  12.     en caso de ser posible, de lo contrario retorna 0*/
  13.    
  14.     if(num!=0)
  15.         printf("El numero es: %d\n",num);
  16.     else
  17.         printf("No es un numero\n");
  18.    
  19.     return 0;
  20.    
  21. }


Saludos
  #8 (permalink)  
Antiguo 11/07/2013, 20:44
 
Fecha de Ingreso: julio-2013
Mensajes: 4
Antigüedad: 10 años, 10 meses
Puntos: 0
Respuesta: ¿Cómo validar si es caracter o entero?

Muchísimas gracias cesar_casla, entiendo perfecto el código y medio entiendo lo de atoi, pero bueno, entiendo "lo esencial" que hace sobre retornar 0 y después el if, muchísimas gracias, me ayudó bastante, y pues elegiré esa estrategia de ahora en adelante para evitar caracteres.

No había probado el código de re_jill_123 (porque eso me lo pidieron un día y no supe hacerlo, después vine acá a preguntar sólo porque me había quedado con la duda, en otras palabras, no tuve necesidad de usar nada de ésto, fue sólo por aprender), tienes razón, al ingresar caracter, se traba todo el programa.

GRACIAS

Etiquetas: char
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 12:00.