SoloCodigo

Programación General => C/C++ => Mensaje iniciado por: luisC en Miércoles 6 de Junio de 2007, 16:06

Título: Comprobacion De Numero En C
Publicado por: luisC en Miércoles 6 de Junio de 2007, 16:06
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
Título: Re: Comprobacion De Numero En C
Publicado por: AnioN en Miércoles 6 de Junio de 2007, 17:33
scanf te devuelve un 0 en caso de que hayas ingresado un caracter, y un 1 en caso de que ingresaste un numero.
Título: Re: Comprobacion De Numero En C
Publicado por: luisC en Jueves 7 de Junio de 2007, 09:41
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??
Título: Re: Comprobacion De Numero En C
Publicado por: LeGatoRojo en Jueves 7 de Junio de 2007, 20:57
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.  
Título: Re: Comprobacion De Numero En C
Publicado por: RONALDxx en Jueves 7 de Junio de 2007, 22:46
se puede hacer con isdigit que esta en ctype.h