Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Geek7 en 29 Julio 2010, 20:55 pm



Título: funcion para saber si es numero
Publicado por: Geek7 en 29 Julio 2010, 20:55 pm
quiero verificar si lo ingresado es un numero (o no es una cadena alfabetica).

intente esto pero no me funciona:
 
Código
  1. #include <iostream>
  2. #include <cctype>
  3.  
  4. using namespace std;
  5.  
  6. int main () {
  7.    do {
  8.  
  9.    cout << "Cual es tu edad?" << endl;
  10.    cin >> edad;
  11.  
  12.    } while(isalpha(edad));
  13.  
  14. return 0;
  15.  
  16. }
  17.  
  18.  


Título: Re: funcion para saber si es numero
Publicado por: .:BlackCoder:. en 29 Julio 2010, 21:02 pm
Nunca la use pero creo que debes declarar edad del tipo char

Saludos...


Título: Re: funcion para saber si es numero
Publicado por: Horricreu en 29 Julio 2010, 21:04 pm
En la tabla ASCII (http://www.ascii.cl/es/) los números van desde 48 hasta 57. Por lo tanto si haces:

Código
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. int main()
  6. {
  7. char a = 48;
  8.  
  9. cout << a << endl;
  10.  
  11.        cin.get();
  12.  
  13. return 0;
  14. }

Te mostrará por pantalla el número 0. Como ya sabes en que valor empieza y en que valor termina, puedes jugar con if().

Saludos :P


Título: Re: funcion para saber si es numero
Publicado por: .:BlackCoder:. en 29 Julio 2010, 21:06 pm
seh pero el problema esta en los numero de varios digitos, debe verificar varias cosas... Pa eso esta la funcion... aunque yo ni idea del funcionamiento interno de esa funcion...

Saludos...


Título: Re: funcion para saber si es numero
Publicado por: Horricreu en 29 Julio 2010, 21:13 pm
seh pero el problema esta en los numero de varios digitos, debe verificar varias cosas... Pa eso esta la funcion... aunque yo ni idea del funcionamiento interno de esa funcion...

Saludos...


Sí, es verdad. Referente a la función isalpha() (http://www.cplusplus.com/reference/std/locale/isalpha/), los parámetros son un char y un locale y, la función es de la libraría locale. Te he puesto el enlace de la función en C++, ya que veo que estás programando en él.

Saludos :P


Título: Re: funcion para saber si es numero
Publicado por: .:BlackCoder:. en 29 Julio 2010, 21:20 pm
Segun lo que vi, en el prototipo espera es un entero, pero pes no se como funciona por alla adentro  :xD

Código
  1. int isalpha ( int c );
  2.  

http://www.cplusplus.com/reference/clibrary/cctype/isalpha/

Saludos...


Título: Re: funcion para saber si es numero
Publicado por: Horricreu en 29 Julio 2010, 21:24 pm
Segun lo que vi, en el prototipo espera es un entero, pero pes no se como funciona por alla adentro  :xD

Código
  1. int isalpha ( int c );
  2.  

http://www.cplusplus.com/reference/clibrary/cctype/isalpha/

Saludos...

Vuelvo a rectificar. La función para C++ se pasan un char y un locale. isalpha() (http://www.cplusplus.com/reference/std/locale/isalpha/).

Saludos :P

EDITO: he escrito lo mismo en el comentario anterior.


Título: Re: funcion para saber si es numero
Publicado por: rob1104 en 29 Julio 2010, 23:31 pm
Hola, yo haria algo asi:
Código
  1. #include <iostream>
  2. #include <cctype>
  3.  
  4. using namespace std;
  5.  
  6. bool esCaracter(char *edad);
  7.  
  8. int main()
  9. {
  10.    char edad[2];
  11.    do
  12.    {
  13.        cout << "Cual es tu edad?:" <<endl;
  14.        cin >> edad;
  15.    }while(esCaracter(edad));
  16. }
  17.  
  18. bool esCaracter(char *edad)
  19. {
  20.    int i = 0;
  21.    while(edad[i])
  22.    {
  23.        if(isalpha(edad[i]))
  24.            return true;
  25.        i++;
  26.    }
  27.    return false;
  28. }
  29.  

Igual se puede optimizar más, pero es la idea.

Saludos

Saludos


Título: Re: funcion para saber si es numero
Publicado por: do-while en 31 Julio 2010, 20:41 pm
¡Buenas!

Si lo que quieres es saber si es un numero, lee en una cadena el valor que llega desde teclado y con la funcion isdigit
Código
  1. int isdigit(int c);
podras saber si cada uno de los caracteres de la cadena es un digito. Luego puedes utilizar la funcion de conversion que quieras para pasar la cadena al tipo de dato que quieras...

¡Saludos!