/
Inicio :: Foros

 F.A.Q.F.A.Q.                  Conéctese para revisar sus mensajesConéctese para revisar sus mensajes   

como comprobar si un entero es digito???

 
      Índice del Foro elrincondelc.com -> Principiantes C/C++
Ver tema anterior :: Ver siguiente tema  
AutorMensaje
aruga



Registrado: 28 Feb 2007
Mensajes: 37

MensajePublicado: 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

MensajePublicado: 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

MensajePublicado: 09/04/2007 1:53 am
Título:

me parece que isdigit()....
Volver arriba
aruga



Registrado: 28 Feb 2007
Mensajes: 37

MensajePublicado: 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

MensajePublicado: 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

MensajePublicado: 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

MensajePublicado: 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

MensajePublicado: 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

MensajePublicado: 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
      Índice del Foro elrincondelc.com -> Principiantes C/C++
Página 1 de 1Todas las horas están en GMT - 8 Horas

 
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas

(c) ElRincondelC.com

Un proyecto de UrlanHeat.com