Pesquisar na Comunidade
Mostrando resultados para as tags ''break''.
Encontrado 1 registro
-
Saudações! Acabei de me inscrever no fórum (primeiro fórum que me inscrevo) porque estou com uma dúvida que está tirando meu sono: Como fazer o While verificar a condição no meio da execução dos seus comandos? Bem, primeiro meu objetivo: Fazer um jogo de perguntas e respostas do tipo múltipla escolha, onde o jogador pode ir respondendo as questões enquanto não tiver errado 3 perguntas. Estou usando o Dev C++ e escrevendo em C++ também, fiz uma versão menor só pra verificar a funcionalidade, e ficou assim: #include <iostream> using namespace std; int main(void){ int resposta, erros=0, acertos=0; while (erros<1){ cout<<"\nQual a cor do ceu?\n\t1 - Azul\n\t2 - Rosa\n\t3 - Branco\nResposta: "; cin>>resposta; if(resposta!=1){ erros++; } else{ acertos++; } cout<<"\nQual a cor da agua?\n\t1 - Azul\n\t2 - Rosa\n\t3 - Incolor\nResposta: "; cin>>resposta; if(resposta!=3){ erros++; } else acertos++; // Se o programa chegou aqui, todas as perguntas foram respondidas e deve sair do loop erros=1; cout<<"\n\n\t\t Erros: "<<erros; } // Exibi a pontuação do jogador cout<<"\n\n\n\t Sua pontuacao foi: "<<acertos<<"\n\n"; system("PAUSE"); return 0; } Ou seja, se errar a primeira pergunta, o jogador não responde a segunda, e se ele acertar as duas, ele sai do programa do mesmo modo, e sua pontuação é igual ao seu número de acertos. Porém, não está funcionando, quando o jogador erra a primeira pergunta, a variável erros muda pra 1 ou seja, deixou de ser menor que 1 e passou a ser igual, porém o "ENQUANTO" continua seu loop e só volta a verificar a variável quando acaba. Já tentei usar o break e o continue porém, nenhum dos dois tem os resultados que quero, já que o break sai de todo o bloco do while, então se o contador fosse 3, não importaria, pois no primeiro erro o programa chegaria ao fim. Eu sei que a solução fácil pra isso seria fazer vários "ifs" antes das questões pra verificar o número de erros. Mas essa é uma solução meio idiota pois iria aumentar muito o tamanho do programa, e eu não estou programando com objetos, então queria saber alguma solução para fazer o While verificar dentro de seu próprio Loop se ela ainda está apto a ser executado ou deveria ser parado, não sei se existe essa possibilidade, pois pelo que eu saiba o funcionamento do While é tosco assim: Condição -> Executa todos os comandos do bloco -> Volta pra condição Eu queria algo assim: Condição -> Comandos !CONDIÇÃO DESFEITA! -> Sai da condição Eu também pensei em colocar: if( erros>=3) break; Ao final de cada pergunta, mas ainda assim, pra mim parece algo muito tosco. O problema é por ser um programa linear? Não existe realmente outra opção ou eu ainda preciso aprender mais?