Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

213
Views
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 answers
Answer question

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 Report

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!