funcion para saber si es numero

Iniciado por Geek7, 29 Julio 2010, 20:55 PM

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

Geek7

quiero verificar si lo ingresado es un numero (o no es una cadena alfabetica).

intente esto pero no me funciona:
Código (cpp) [Seleccionar]

#include <iostream>
#include <cctype>

using namespace std;

int main () {
    do {

    cout << "Cual es tu edad?" << endl;
    cin >> edad;

    } while(isalpha(edad));

return 0;

}


.:BlackCoder:.

Nunca la use pero creo que debes declarar edad del tipo char

Saludos...
"No te esfuerzes por saber mas, esfuerzate por ser el mejor en lo que sabes... Y asi sabras mas" .:BlackCoder:. jajaja




Horricreu

#2
En la tabla ASCII los números van desde 48 hasta 57. Por lo tanto si haces:

Código (cpp) [Seleccionar]
#include <iostream>

using namespace std;

int main()
{
char a = 48;

cout << a << endl;

       cin.get();

return 0;
}


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

.:BlackCoder:.

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...
"No te esfuerzes por saber mas, esfuerzate por ser el mejor en lo que sabes... Y asi sabras mas" .:BlackCoder:. jajaja




Horricreu

#4
Cita de: .: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...


Sí, es verdad. Referente a la función 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

.:BlackCoder:.

Segun lo que vi, en el prototipo espera es un entero, pero pes no se como funciona por alla adentro  :xD

Código (cpp) [Seleccionar]
int isalpha ( int c );


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

Saludos...
"No te esfuerzes por saber mas, esfuerzate por ser el mejor en lo que sabes... Y asi sabras mas" .:BlackCoder:. jajaja




Horricreu

#6
Cita de: .: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 (cpp) [Seleccionar]
int isalpha ( int c );


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().

Saludos :P

EDITO: he escrito lo mismo en el comentario anterior.

rob1104

#7
Hola, yo haria algo asi:
Código (cpp) [Seleccionar]
#include <iostream>
#include <cctype>

using namespace std;

bool esCaracter(char *edad);

int main()
{
    char edad[2];
    do
    {
        cout << "Cual es tu edad?:" <<endl;
        cin >> edad;
    }while(esCaracter(edad));
}

bool esCaracter(char *edad)
{
    int i = 0;
    while(edad[i])
    {
        if(isalpha(edad[i]))
            return true;
        i++;
    }
    return false;
}


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

Saludos

Saludos
Sin análisis de requisitos o sin diseño, programar es el arte de crear errores en un documento de texto vacío.

do-while

¡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 isdigitint 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!
- Doctor, confundo los números y los colores.
- Vaya marrón.
- ¿Marrón? ¡Por el culo te la hinco!