Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

214
Vistas
problema de verificación de usuario if y else
int main() { int account_or_not; account obj; menu menu_obj; cout << "Do you have an account? 1 for yes or 2 for no " << endl; cin >> account_or_not; if (account_or_not == 1) { menu_obj.user_menu(); } else if (account_or_not == 2) { obj.create_account(); } else { cout << "You entered a value other than 1 or 2 please try again "<< endl; cin >> account_or_not; } return 0; }

Esto es lo que está en la parte principal de mi código, y no estoy seguro de si estoy siendo tonto, pero probé un caso de cambio y si no y en el otro (o por defecto para el cambio) cuando verifico lo que el usuario ha ingresado fue mal y pedirles que lo ingresen nuevamente, el programa finaliza cuando ingresan el valor correcto. Por ejemplo, si se ingresa 3, le dirá al usuario que intente nuevamente, luego, cuando se ingresa 1 o 2, el programa finaliza. Cualquier idea, gracias de antemano.

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Esto se debe al hecho de que no realiza un bucle hasta que el usuario ingresa la entrada correcta. ¡Puedes usar el ciclo do-while para hacerlo!

Consulte esto para obtener más información sobre los bucles do-while en C++.

over 4 years ago · Santiago Trujillo Denunciar

0

Vayamos en pequeños pasos. Primero, pidamos al usuario solo una vez que corrija su entrada y supongamos además que el usuario debe hacerlo bien en el segundo intento. Primero debe verificar la entrada válida y luego usarla, no al revés:

 cin >> account_or_not; if (account_or_not != 1 && account_or_not != 2) { cout << "You entered a value other than 1 or 2 please try again "<< endl; cin >> account_or_not; } // assume input is now valid... if (account_or_not == 1) { menu_obj.user_menu(); } else if (account_or_not == 2) { obj.create_account(); }

Esto solo solicitará una entrada corregida una vez. Si desea seguir preguntando hasta que el usuario ingresó la entrada correcta, puede usar un bucle:

 cin >> account_or_not; while (account_or_not != 1 && account_or_not != 2) { cout << "You entered a value other than 1 or 2 please try again "<< endl; cin >> account_or_not; } // assume input is now valid... if (account_or_not == 1) { menu_obj.user_menu(); } else if (account_or_not == 2) { obj.create_account(); }

Ahora, esto solicita una entrada válida repetidamente hasta que el usuario ingrese 1 o 2 . Sin embargo, no maneja correctamente el caso de que el usuario ingrese foo o user input is the worst that can happen to a program . Si la entrada del usuario no se puede analizar como un int , entonces std::cin se encuentra en un estado de error del que debe recuperarse antes de seguir leyendo. Dije que quiero dar pequeños pasos, y no tengo que repetir lo que se ha escrito en otro lugar, así que lo remito a estas preguntas y respuestas para leer más: Buen ciclo de validación de entrada usando cin - C++ .

over 4 years ago · Santiago Trujillo Denunciar

0

A continuación se muestra un ejemplo de trabajo usando while loop. Si el usuario ingresa 1 o 2, haga algún trabajo en el bloque de condición respectivo y luego break del ciclo while. Por otro lado, si el usuario ingresa 3, pídale que ingrese nuevamente.

 #include<iostream> int main() { int account_or_not; //account obj; //menu menu_obj; std::cout << "Do you have an account? 1 for yes or 2 for no " << std::endl; std::cin >> account_or_not; while(true) { if (account_or_not == 1) { // menu_obj.user_menu(); std::cout<<"inside 1"<<std::endl; //do something and then break break; } else if (account_or_not == 2) { //obj.create_account(); std::cout<<"inside 2"<<std::endl; //do something and then break break; } else { std::cout << "You entered a value other than 1 or 2 please try again "<< std::endl; std::cin >> account_or_not; } } return 0; }

Esto hace lo que quieres. Pruébelo con diferentes entradas como 1,2 o 3.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda