[C con Clase] Problema con if

Programante programante en gmail.com
Dom Ago 17 18:55:52 CEST 2008


Yose escribió:
> Hola he empezado hoy el curso y estoy por el capitulo 5 de el curso (todavia sin leer este capitulo) y he decidido ir experimentando.
> Bueno pues he hecho este codigo
>
> #include<iostream>
> using namespace std;
> int main()
> {
>     char edad[32];
>   
Cámbialo por int edad;
>     
>     cout<<"Edad:"<<endl;
>     cin>> edad;
>     
>     if (edad <= 17)
>     cout<<"No puedes entrar, eres menor de edad"<<endl;
>     else
>     cout<<"Adelante, tienes la edad suficiente"<<endl;
>     
> };
>
> Pero de momento hay un error en 
>
> if (edad<=17)
>
> no se donde esta el error, a lo mejor es cosa de que necesito alguna libreria nose. Lei por ahi que no se puede comparar directamente la variable edad con un entero creo que entendi xD aunque tampoco estoy seguro de que diera eso a entender xD.
>   
Al definir edad como un char[32], e introducir por ejemplo "15", se está 
almacenando en ella los valores '1', '5', '\0'.

Al referirte a edad lo estás haciendo a la dirección de memoria de la 
pila donde se almacenan esos 32 caracteres. Lo cual no es lo que te 
interesa.

Podrías hacer una comparación con el contenido, usando if ( (edad[0] ==  
'0') || (edad[1] == '\0') || ((edad[1] ==  '1') && (edad[1] <=  '7'))) ...

Otra opción es realizar la conversión de tipos, usando la función atoi() 
para pasar de una cadena a un número: if (atoi(edad) <= 17) ...

Pero al decirle que la edad es un entero, el operador >> ya hace las 
conversiones automáticamente.







Más información sobre la lista de distribución Cconclase