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

Proposta diferente do instrutor e continua imprimindo 33 e 37

Busquei uma linha de pensamento diferente do exercício, parecia lógica, porém continua imprimindo o número 33 e 37, mesmo observando outras discussões ainda continuo sem entender o motivo. Poderiam me ajudar?

Queria propor o seguinte: Se n for diferente de 33 ou de 37 vai mostrar n depois incrementa n com n+1.

<meta charset="UTF-8">

<script>

    function pulaLinha() {

    document.write("<br>");
    document.write("<br>");
    }

    function mostra(frase) {

    document.write(frase);
    pulaLinha();
    }

    n=30;
    while (n<=40){

        if(n!=33 || n!=37){
             mostra(n);
        }
        n=n+1;

    }

    mostra("FIM")

</script>
2 respostas
solução!

Sua condição do if sempre vai dar true por causa do ||, quando n == 33 n!=37 é true, quando n == 37 n!=33 é true, por isso seu código imprime o 33 e 37.

Mas, se você usar o && vai funcionar perfeitamente, quando n for 33 ou 37 um dos lados da condição é false o que faz o operador && falhar pulando a instrução do if.

if(n!=33 && n!=37){

    mostra(n);
}

    n = n + 1;

Pra usar o || tem que utilizar o ==

if(n == 33 || n == 37){

      n = n + 1;

} else{

      mostra(n);
      n = n + 1;
}

Rapaz, deu um bug na minha cabeça mas depois de reler algumas vezes eu entendi a sequência lógica. Muito obrigado!