Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Don Pollo en 17 Marzo 2011, 18:24 pm



Título: Como saber si el dato introducido por teclado es numérico? [C++]
Publicado por: Don Pollo en 17 Marzo 2011, 18:24 pm
Pues eso, estoy haciendo una práctica y necesito saber si hay alguna función para saber si el dato que han introducido por teclado es de tipo numérico.

Sé que puede ser una duda bastante tonta, pero me he quedado bloqueado en ese punto de la aplicación  :-\


Un saludo y gracias de antemano!


Título: Re: Como saber si el dato introducido por teclado es numérico? [C++]
Publicado por: Leber en 17 Marzo 2011, 18:27 pm
Creo que puedes usar: http://www.cplusplus.com/reference/clibrary/cctype/isdigit/
Código:
isdigit(var_a_comprovar);


Saludos


Título: Re: Como saber si el dato introducido por teclado es numérico? [C++]
Publicado por: Akai en 17 Marzo 2011, 18:40 pm
isdigit sólo te mira un carácter, si quieres comprobar toda una cadena, lo lanzas n veces para toda la cadena.

Otra opción, es comparar si el carácter en el que estás (mientras recorres la cadena) está entre el valor del carácter 0 y el valor del carácter 9
Código
  1. caracter>='0' && caracter<='9'
Que imagino será lo que isdigit hace por debajo, pero de esta forma, te ahorras llamar a una función


Título: Re: Como saber si el dato introducido por teclado es numérico? [C++]
Publicado por: Don Pollo en 17 Marzo 2011, 18:48 pm
Otra opción, es comparar si el carácter en el que estás (mientras recorres la cadena) está entre el valor del carácter 0 y el valor del carácter 9
Código
  1. caracter>='0' && caracter<='9'
Que imagino será lo que isdigit hace por debajo, pero de esta forma, te ahorras llamar a una función

Pero eso sólo me serviría para valores comprendidos entre 0 y 9. Pero si meto el 14, por ejemplo, me dirá que no es un dato numérico.


Título: Re: Como saber si el dato introducido por teclado es numérico? [C++]
Publicado por: pucheto en 17 Marzo 2011, 18:54 pm
Pero eso sólo me serviría para valores comprendidos entre 0 y 9. Pero si meto el 14, por ejemplo, me dirá que no es un dato numérico.
No... eso se fija si los caracteres q metes son o no un numero... el 14 = '1' '4'... primero lo lees como cadena, te fijas si es numerico, y despues lo convertís a numero...


Título: Re: Como saber si el dato introducido por teclado es numérico? [C++]
Publicado por: Akai en 17 Marzo 2011, 19:04 pm
Exacto, si tu lees una cadena, y quieres comprobar si es un número, tienes que comprobar que todos sus dígitos sean números.

Ejemplo:

te introducen 65536 y lo lees como cadena de caracteres , el contenido de dicha cadena es:
Código
  1. cad[0]='6'
  2. cad[1]='5'
  3. cad[2]='5'
  4. cad[3]='3'
  5. cad[4]='6'
  6. cad[5]='\0'

mientras, que si tu lo lees como un entero, simplemente es un entero que tiene el valor 65536.

Si tu estás leyendo números como cadenas, y te preocupa que te puedan colar cosas como asd345:
representado como:
Código
  1. cad[0]='a'
  2. cad[1]='s'
  3. cad[2]='d'
  4. cad[3]='3'
  5. cad[4]='4'
  6. cad[5]='5'
  7. cad[6]='\0'
Utilizas isdigit para cada carácter o lo que he comentado yo antes.


Título: Re: Como saber si el dato introducido por teclado es numérico? [C++]
Publicado por: Don Pollo en 17 Marzo 2011, 19:06 pm
Vale vale, entiendo.

Muchas gracias a los 3  ;D