Dev - C++ - condiciones

 
Vista:

condiciones

Publicado por Alejandro (8 intervenciones) el 25/09/2021 03:11:57
// Hola buenas noches, tengo algo malo en el if else me imprime el letrero de hombre y mujer .
no he podido cuadrar eso alguien me podría ayudar y decir cual es el error. porfavor


#include <iostream>
#include <stdlib.h>
using namespace std;

class Persona
{
private:
int edad;
float estatura;
string genero;
string nombre;

public:
void clasificar();
};

void Persona::clasificar()
{
cout<<"Digite su Nombre: ";cin>>nombre;
cout<<"Digite su Sexo: ";cin>>genero;
cout<<"Escriba su Edad: ";cin>>edad;
cout<<"Escriba su Estatura: ";cin>>estatura;


if (genero == "MASCULINO" || "masculino" ){
if (edad >14 && edad <=17)
if (estatura >=1.79)
{
cout<<"\nQue bien! Has Clasificado Al Semillero, Bienvenido..."<<endl;
}
else
{
cout<<"\nLo sentimos! No Has Clasificado Al Semillero."<<endl;
}
}else if (genero == "FEMENINO" || "femenino" )
{
}
if (edad >13 && edad <=16)
{
}
if (estatura >=1.69)
{
cout<<"\nQue bien! Has Clasificado Al Semillero, Bienvenida..."<<endl;
}
else
{
cout<<"\nLo sentimos! No Has Clasificado Al Semilleroo."<<endl;
}

cout<<"\nNombre : "<<nombre;
cout<<"\nEstatura : "<<estatura;
cout<<"\nGenero : "<<genero<<endl;

}


int main()
{
Persona persona;

persona.clasificar();

system("pause");
return 0;
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

condiciones

Publicado por anonymous (146 intervenciones) el 25/09/2021 03:40:59
Hola, mira el problema es que por lo que veo tu quieres verificar si la variable `genero' es igual a "MASCULINO" O si es igual a "masculino" pero estas usando una sintaxis incorrecta, tu tienes que comparar explícitamente a la variable en cuestión con ambas cadenas, pero solo la comparaste con la primera y dejaste la segunda suelta (esto último es equivalente a comparar un puntero no nulo con NULL). Esto aplica también cuando comparas con "FEMENINO" y "femenino". Lo que tienes que hacer es cambiar el código como te muestro en el ejemplo, cualquier cosa avísame por este medio, suerte, saludos.

Ejemplo:

1
2
3
4
5
string var;
 
if(var == "???" || "!!!"); //No
 
if(var == "???" || var == "!!!"); //Si
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

condiciones

Publicado por ALEJ (8 intervenciones) el 25/09/2021 03:48:22
Amigo lo hice tal cual como me dijiste pero sale lo mismo
me imprime lo de hombre y mujer
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

condiciones

Publicado por anonymous (146 intervenciones) el 25/09/2021 03:49:07
A ver pásame el código.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
-1
Comentar

condiciones

Publicado por Alejandro (8 intervenciones) el 25/09/2021 03:51:23
// yo creo que el error esta en que puse mal las llaves o no se esto me tiene tan frustrado algo tan básico y me da tan duro

#include <iostream>
#include <stdlib.h>
using namespace std;

class Persona
{
private:
int edad;
float estatura;
string genero;
string nombre;

public:
void clasificar();
};

void Persona::clasificar()
{
cout<<"Digite su Nombre: ";cin>>nombre;
cout<<"Digite su Sexo: ";cin>>genero;
cout<<"Escriba su Edad: ";cin>>edad;
cout<<"Escriba su Estatura: ";cin>>estatura;


if (genero == "MASCULINO" || genero == "masculino" ){
if (edad >14 && edad <=17)
{
}
if (estatura >=1.79)
{
cout<<"\nQue bien! Has Clasificado Al Semillero, Bienvenido..."<<endl;
}
else
{
cout<<"\nLo sentimos! No Has Clasificado Al Semillero."<<endl;
}

}
else if (genero == "FEMENINO" || genero == "femenino" )
{
}
if (edad >13 && edad <=16)
{
}
if (estatura >=1.69)
{
cout<<"\nQue bien! Has Clasificado Al Semillero, Bienvenida..."<<endl;
}
else
{
cout<<"\nLo sentimos! No Has Clasificado Al Semillero."<<endl;
}


cout<<"\nNombre : "<<nombre;
cout<<"\nEstatura : "<<estatura;
cout<<"\nGenero : "<<genero<<endl;

}


int main()
{
Persona persona;

persona.clasificar();

system("pause");
return 0;
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

condiciones

Publicado por anonymous (146 intervenciones) el 25/09/2021 03:54:00
Intenta hacer las verificaciones de estatura dentro del cuerpo del if de edad, y me avisas.

Si te funciona la parte de Masculino, reconstruye los bloques logicos de Femenino, porque veo que hay algunos errores.

Si ves que aún te sigue presentando problemas, vacía el búfer de entrada cada vez antes de usar `cin' escribiendo fflush(stdin).

Si después de esto aún te sigue dando problemas, entonces me rindo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

condiciones

Publicado por Alejandro (8 intervenciones) el 25/09/2021 04:08:59
amigo lo hice asi y nada sigue igual
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
-1
Comentar
sin imagen de perfil

condiciones

Publicado por anonymous (146 intervenciones) el 25/09/2021 04:12:33
Reconstruyelo en este orden a ver.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
if(genero... Masculino...)
{
    if(edad...)
    {
         if(estatura...)
         {
         }
    }
}
else if(genero... Femenino...)
{
    if(edad...)
    {
         if(estatura...)
         {
         }
    }
}
else
{
}
Si ves que aún te sigue presentando problemas, vacía el búfer de entrada cada vez antes de usar `cin' escribiendo fflush(stdin).

Si después de esto aún te sigue dando problemas, revisa que los datos esten siendo leídos correctamente, sino entonces me rindo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
-1
Comentar

condiciones

Publicado por Alejandro (8 intervenciones) el 25/09/2021 04:21:43
//ya lo solucione eran tan sencillo como dejar las llaves de hombre y las de mujer quitarlas y ya.
// una pregunta como es que hago para que cuando el usuario valla a copiar su nombre y lo guarde en su variable pueda dar espacio

#include <iostream>
#include <stdlib.h>
using namespace std;

class Persona
{
private:
int edad;
float estatura;
string genero;
string nombre;

public:
void clasificar();
};

void Persona::clasificar()
{
cout<<"Digite su Nombre: ";cin>>nombre;
cout<<"Digite su Sexo: ";cin>>genero;
cout<<"Escriba su Edad: ";cin>>edad;
cout<<"Escriba su Estatura: ";cin>>estatura;


if (genero == "MASCULINO" || genero == "masculino" ){
if (edad >14 && edad <=17)
if (estatura >=1.79)
{
cout<<"\nQue bien! Has Clasificado Al Semillero, Bienvenido..."<<endl;
}
else
{
cout<<"\nLo sentimos! No Has Clasificado Al Semillero."<<endl;
}

}else if (genero == "FEMENINO" || genero == "femenino" )
if (edad >13 && edad <=16)
if (estatura >=1.69)

cout<<"\nQue bien! Has Clasificado Al Semillero, Bienvenida..."<<endl;

else
cout<<"\nLo sentimos! No Has Clasificado Al Semillero."<<endl;

cout<<"\nNombre : "<<nombre;
cout<<"\nEstatura : "<<estatura;
cout<<"\nGenero : "<<genero<<endl;

}


int main()
{
Persona persona;

persona.clasificar();

system("pause");
return 0;
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

condiciones

Publicado por anonymous (146 intervenciones) el 25/09/2021 04:38:28
Ah que bien, como yo te dije de último funcionaba igual con las llaves, pero si ya te salió pues bien :),
si no mal recuerdo es con cin.getline(). Inténtalo y me dices.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
-1
Comentar

condiciones

Publicado por Alejandro (8 intervenciones) el 25/09/2021 04:56:59
Me paso algo tan raro la solución que yo le había dado de quitar las llaves no es yo cerré el programa y de un momento a otro dejo de funcionar la aplique como usted me lo puso y si me dio muchas gracias por todo es que ami se me asi raro un else sin llaves
cin.getline(). para esto hay que poner libreria o no
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
-1
Comentar
sin imagen de perfil

condiciones

Publicado por anonymous (146 intervenciones) el 25/09/2021 14:46:55
Que bien me alegro haberte podido ayudar, getline es un método de istream, cin es una instancia de ese tipo, no necesitas incluir nada más que a <iostream>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
-1
Comentar