• Jueves 7 de Noviembre de 2024, 23:08

Autor Tema:  Comprobacion De Numero En C  (Leído 1347 veces)

luisC

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Comprobacion De Numero En C
« en: Miércoles 6 de Junio de 2007, 16:06 »
0
Hola buenas, este es mi primer mensaje en el foro, y espero vuestra ayuda.
Mi problema es que tengo una estructura con varios datos, entre los que tengo  una variable de tipo float, pues lo que quiero es comprobar que en esa variable solo se metan numeros, he estado mirando que scanf devuelve un 1 cuando lo que has introducido son numeros, pero no me gusta esa manera, se os ocurre otra forma de comprobar que solo se metan numeros??

espero vuestra respuesta!!!

Un saludo

AnioN

  • Miembro MUY activo
  • ***
  • Mensajes: 339
    • Ver Perfil
Re: Comprobacion De Numero En C
« Respuesta #1 en: Miércoles 6 de Junio de 2007, 17:33 »
0
scanf te devuelve un 0 en caso de que hayas ingresado un caracter, y un 1 en caso de que ingresaste un numero.

luisC

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Re: Comprobacion De Numero En C
« Respuesta #2 en: Jueves 7 de Junio de 2007, 09:41 »
0
Ya lo de scanf lo estuve mirando pero, no me gusto esa forma, y pienso yo que debe de haber otra forma aunque sea mas enrevesada, esque si fuera un numero int, pues con la funcion isdigit lo podria sacar, pero esque siendo float??
no se os ocurre nada??

LeGatoRojo

  • Miembro HIPER activo
  • ****
  • Mensajes: 552
  • Nacionalidad: mx
    • Ver Perfil
    • LeGatoRojo
Re: Comprobacion De Numero En C
« Respuesta #3 en: Jueves 7 de Junio de 2007, 20:57 »
0
Tengo esta funcion que verifica si es un numero decimal, la  puedes empelar en un ciclo de captura para no tomar en cuenta los caracteres no validos.

Código: Text
  1.  
  2. int decimales(char *texto)
  3. {
  4.   int lastdato;
  5.   int puntdec=0,i;  
  6.         int nver=1;    
  7.   for(i=strlen(texto)-1;i>=0;i--)
  8.   {    
  9.              lastdato=texto[i];
  10.              if(lastdato == '.')
  11.                  puntdec++;
  12.              if(puntdec > 1 || (lastdato == '-' && i > 0) || (!isdigit(lastdato) && lastdato != '.' && lastdato != '-'))
  13.              {
  14.                  nver--;
  15.                  break;
  16.              }            
  17.   }
  18.         return(nver);
  19. }
  20.  
  21.  
Un día desperte y en lugar de dientes tenía colmillos, en lugar de manos, tenía garras; pero lo más impactante fue el color escarlata de mi pelaje.

RONALDxx

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Re: Comprobacion De Numero En C
« Respuesta #4 en: Jueves 7 de Junio de 2007, 22:46 »
0
se puede hacer con isdigit que esta en ctype.h