Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

[Dúvida] dúvida na lógica do código sem o "break"

por que, quando não é colocado o break na condição do if, ele fica em loop infinito, ou seja, perguntando qual o número, mesmo o código estando dentro do while que condiciona em até 3 as tentativas?

var mensagemError = "Errouuuuuu!";
  var numeroPensado = 4;

  contador = 1;

  while (contador <= 3) {
    var chute = parseInt(prompt("Já pensei. Qual você acha que é?"));

    if (chute == numeroPensado) {
      mostra("Uau! Você acertou, pois eu pensei no " + numeroPensado);
    } else {
      mostra(mensagemError);
      contador++;
    }

testei e só parou quando digitei as três tentativas erradas

Uau! Você acertou, pois eu pensei no 4 Uau! Você acertou, pois eu pensei no 4 Uau! Você acertou, pois eu pensei no 4 Uau! Você acertou, pois eu pensei no 4 Uau! Você acertou, pois eu pensei no 4 Uau! Você acertou, pois eu pensei no 4 Uau! Você acertou, pois eu pensei no 4 Uau! Você acertou, pois eu pensei no 4 Uau! Você acertou, pois eu pensei no 4 Uau! Você acertou, pois eu pensei no 4 Errouuuuuu! Errouuuuuu! Errouuuuuu!

3 respostas

Por que o incremento do contador está dentro do else, então ele só vai incrementar o contador se vc errar o chute, tirando o contador++ do bloco do else{} e colocando no bloco do while{} resolve.

while (contador <= 3) {
    var chute = parseInt(prompt("Já pensei. Qual você acha que é?"));

    if (chute == numeroPensado) {
      mostra("Uau! Você acertou, pois eu pensei no " + numeroPensado);
    } else {
      mostra(mensagemError);
    }
     contador++;
}

Perceba que você só incrementa a variável contador dentro do else, que é processado quando o usuário não acerta o chute.

Como a condição para parar o programa é contador <= 3, se você não incrementar o valor da variável ele nunca irá parar.

solução!

Só não esqueça de marcar como solucionado ok :), obrigado.