| Ver tema anterior :: Ver siguiente tema |
| Autor | Mensaje |
|---|
aruga
Registrado: 28 Feb 2007 Mensajes: 37
| Publicado: 09/04/2007 12:47 am | | | Título: como comprobar si un entero es digito??? |
| | como comprobar si un entero es digito??? |
|
| Volver arriba | |
 |
jme
Registrado: 29 Mar 2007 Mensajes: 11
| Publicado: 09/04/2007 12:52 am | | | Título: |
| No entiendo muy bien la pregunta ... si te refieres a si un número entero es de un solo dígito, bastará con que te preguntes si está entre -9 y 9.
Un saludo. |
|
| Volver arriba | |
 |
delfos
Registrado: 21 Mar 2007 Mensajes: 33 Ubicación: Antofagasta
| Publicado: 09/04/2007 1:53 am | | | Título: |
| | me parece que isdigit().... |
|
| Volver arriba | |
 |
|
aruga
Registrado: 28 Feb 2007 Mensajes: 37
| Publicado: 09/04/2007 1:57 am | | | Título: no no es eso |
| el isdigit es para cadenas
y el entero no esta entre 1 y 9 es un numero largo, eje. 5039482049 y quiero saber si se a introducido algun caracter o otra cosa q no sea un numero |
|
| Volver arriba | |
 |
jme
Registrado: 29 Mar 2007 Mensajes: 11
| Publicado: 09/04/2007 2:10 am | | | Título: |
| Mmmm, si el parámetro en cuestión es un entero simplemente se puede comprobar si se encuentra entre INT_MIN e INT_MAX. Si eso no te sirve y quieres comprobarlo, teniendo isdigit() puedes utililizar itoa() [librería string.h] para convertir el número a cadena de caracteres, o directamente convertirlo y comprobar a pelo en un bucle caracter a caracter (de 0 a longitud del string) si es 0,1,2,3,4,5,6,7,8 o 9.
Un saludo |
|
| Volver arriba | |
 |
Batallas
Registrado: 15 Nov 2006 Mensajes: 72
| Publicado: 09/04/2007 5:41 am | | | Título: |
| la funcion scanf devuelve el valor 1 si es verdad y 0 si es mentira,
prueba a declarar una variable por ejemplo llamada esnumero;
int esnumero,numero;
esnumero=scanf("%d",&numero); if(esnumero==1) printf("El valor es un numero"); else printf("El valor no es un numero"); |
|
| Volver arriba | |
 |
|
rir3760

Registrado: 01 Oct 2004 Mensajes: 3841 Ubicación: Mexico
| Publicado: 09/04/2007 8:04 am | | | Título: |
| Una forma a prueba de fallos pero algo larga es utilizando fgets para leer una linea de texto y strtol para verificar que todos los caracteres hayan sido procesados y convertidos en un numero entero.
Un ejemplo de esto en C estandar es:
| Código: | #include <stdio.h> #include <stdlib.h> #include <string.h> #include <errno.h> #include <limits.h>
#define LONG_CADENA 256
int fn_validar_int(char const *texto, int *numero);
int main(int argc, char *argv[]) { char texto[LONG_CADENA]; int numero; /* leer cadena de la entrada estandard */ printf("Introduce un numero entero: "); fflush(stdout); fgets(texto, LONG_CADENA, stdin); /* Verificar que el numero sea valido */ if (fn_validar_int(texto, &numero)) printf("El numero %d es valido\n", numero); else printf("El texto \"%s\" no pudo convertirse con exito!\n", texto); return EXIT_SUCCESS; }
/* ** Verifica que una linea de texto solo contenga caracteres que ** puedan convertirse exitosamente al tipo int. Valores de retorno: ** 1 ==> conversion con exito ** 0 ==> conversion sin exito */ int fn_validar_int(char const *texto, int *numero) { char *aux; long resultado; /* eliminar '\n' si existe */ if ((aux = strchr(texto, '\n')) != NULL) *aux = '\0'; /* Verificar que la longitud del texto sea mayor que 0 */ if (texto[0] == '\0') return 0; errno = 0; resultado = strtol(texto, &aux, 10); /* Verificar si al menos un caracter pudo convertirse con exito */ if (resultado == 0 && aux == texto) return 0; /* Verificar que el numero este en el rango valido para el tipo long */ if (errno == ERANGE && (resultado == LONG_MAX || resultado == LONG_MIN)) return 0; /* Verificar que TODOS los caracteres se hayan convertido con exito */ if (*aux != '\0') return 0; /* Verificar que el numero este en el rango valido para el tipo int */ if (resultado > INT_MAX || resultado < INT_MIN) return 0; /* Si se cumplen todas las condiciones el valor introducido es valido */ *numero = resultado; return 1; }
|
Un saludo _________________ The capacity to learn is a gift; The ability to learn is a skill; The willingness to learn is a choice. -- Rebec of Ginaz |
|
| Volver arriba | |
 |
snot_
Registrado: 03 Oct 2005 Mensajes: 3
| Publicado: 09/04/2007 5:41 pm | | | Título: |
| | Código: | #include <stdio.h>
int main() { int num;
printf("Ingrese algo: "); if(scanf("%d", &num) == 1) printf("Si es un numero\n"); else printf("No es un numero\n"); }
|
|
|
| Volver arriba | |
 |
rir3760

Registrado: 01 Oct 2004 Mensajes: 3841 Ubicación: Mexico
| Publicado: 09/04/2007 11:31 pm | | | Título: |
| Utilizar scanf no serviria ya que esta aceptaria cadenas terminadas con caracteres no validos como, por ejemplo, "123jhhhhjhjkjkhk".
Un saludo _________________ The capacity to learn is a gift; The ability to learn is a skill; The willingness to learn is a choice. -- Rebec of Ginaz |
|
| Volver arriba | |
 |
|
|