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>usingnamespace 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");return0;}
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?
Pergunta
Geovani Almeida Meira
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:
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:
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?
Link para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.