Como saber si el dato introducido por teclado es numérico? [C++]

Iniciado por Don Pollo, 17 Marzo 2011, 18:24 PM

0 Miembros y 1 Visitante están viendo este tema.

Don Pollo

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!

Leber

"Solo los tontos carecen de preucupaciones." Johann Wolfgang Goethe

Akai

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 (cpp) [Seleccionar]
caracter>='0' && caracter<='9' Que imagino será lo que isdigit hace por debajo, pero de esta forma, te ahorras llamar a una función

Don Pollo

Cita de: Akai en 17 Marzo 2011, 18:40 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 (cpp) [Seleccionar]
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.

pucheto

Cita de: Don Pollo en 17 Marzo 2011, 18:48 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...

Akai

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 (cpp) [Seleccionar]

cad[0]='6'
cad[1]='5'
cad[2]='5'
cad[3]='3'
cad[4]='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 (cpp) [Seleccionar]

cad[0]='a'
cad[1]='s'
cad[2]='d'
cad[3]='3'
cad[4]='4'
cad[5]='5'
cad[6]='\0'

Utilizas isdigit para cada carácter o lo que he comentado yo antes.

Don Pollo