Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

262
Visualizações
¿Cómo usar una caja de interruptor dentro de un bucle for?

Estoy haciendo un programa de prueba en el lenguaje de programación C++. Utilicé un ciclo for para pasar por cada caso de cambio, pero cuando ejecuto el programa, sigue repitiendo el caso 0 y no puedo detener el ciclo después de responder mi prueba. ¿Cómo debo solucionarlo?

 #include <iostream> #include <string> using namespace std ; void quiz_count () ; void display_question () ; void question (string question , string a , string b , string c , string d , char correct_answer) ; void result () ; int question_num = 0 ; int correct = 0 ; int wrong = 0 ; int main () { display_question() ; return 0 ; } void quiz_count () { system("cls") ; cout << "Question Number: " << question_num << "\t\t Correct Answer:" << correct << "\t\t Wrong Answer:" << wrong << endl << endl ; display_question () ; } void display_question() { for (int i=0; i<10 ; i++) { switch (i) { case 0 : question ( "1) What is recycling?" , "Buying new clothes" , "Collecting and using materials to make something new" , "Throwing things in garbage can" , "Selling items" , 'b' ) ; break ; case 1 : question ( "2) What are the 3R's of the recycling?" , "Redirect, Rude, Round" , "Respectful, Responsible, Right" , "Reduce, Reuse, Recycle" , "Rewrite, Rewind, Respond" , 'c') ; break ; case 2 : question ( "3) What goes into the green bin?" , "plastic" , "glass" , "cans" , "paper" , 'b' ) ; break ; } } result () ; } void result () { system("cls") ; cout << "The total of question is :" << question_num << endl ; cout << "The correct answer from you is :" << correct << endl ; cout << "The wrong answer from you is :" << wrong << endl ; } void question (string question , string a , string b , string c , string d , char correct_answer) { cout << question << endl ; cout << "A. \t" << a << endl ; cout << "B. \t" << b << endl ; cout << "C. \t" << c << endl ; cout << "D. \t" << d << endl ; char answer ; cout << "Please enter your answer here :" ; cin>>answer ; if (answer == correct_answer) { correct ++; } else wrong ++ ; question_num ++ ; quiz_count() ; }
over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

El problema no es el bucle + switch , sino la recursividad infinita que estás usando:

  1. display_question() llama a question()
  2. question() llama a quiz_count()
  3. quiz_count() llama a display_question() , por lo que regresa al paso 1.

Los valores de i que está observando son simplemente los valores de diferentes llamadas a la función display_question .

Probablemente obtendrá el resultado deseado eliminando la llamada display_question display_question() de quiz_count . Sin embargo, la combinación de bucle e switch no es una buena opción aquí. la siguiente implementación produce los mismos resultados además de ser más fácil de entender:

 void display_question() { question ( "1) What is recycling?" , "Buying new clothes" , "Collecting and using materials to make something new" , "Throwing things in garbage can" , "Selling items" , 'b' ) ; question ( "2) What are the 3R's of the recycling?" , "Redirect, Rude, Round" , "Respectful, Responsible, Right" , "Reduce, Reuse, Recycle" , "Rewrite, Rewind, Respond" , 'c') ; question ( "3) What goes into the green bin?" , "plastic" , "glass" , "cans" , "paper" , 'b' ) ; result () ; }
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda