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

Meu raciocínio [não funcionou]

Onde eu errei no meu código ? tentei excluir usando o sinal diferente != de 33 e 37 porém o resultado mostrou o 33 e não mostrou o 37, é como se o código estivesse ignorando o primeiro if além do mais, ele imprimiu o numero 41 também.

<meta charset="UTF-8">

<script>

function pulaLinha() {
    document.write("<br>");
}

function mostra(frase) {
    document.write(frase);
    pulaLinha();
}

var numero = 30

while(numero <= 40) {

    if (numero != 33) {

        mostra(numero);
        numero = numero + 1;

    }
    if (numero != 37) {

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

     else {

        numero = numero + 1
    }

}
</script>
4 respostas

Bom dia Gabriel,

Vamos lá o motivo que foi imprimido o 33 é que no numero foi negativo no primeiro if mas positivo no segundo e o 41 apareceu pelo mesmo motivo, entra no while com o valor de 40, no primeiro if ele acrescenta mais um e imprime, no caso ele virou 41 e entrou no segundo if, como 41 != de 37 ele imprimiu também, uma forma de resolver isso seria concatenando os if, dessa forma ele faz os 2 testes no mesmo if

while (numero <= 40) {
    if (numero == 33 || numero == 37) {
      numero += 1;
    } else {
    mostra(numero);
    numero += 1;
    }
}

}

Se você aninhar as instruções vai funcionar, mas é muito mais complicado dessa forma.

Eu fiz assim:

<meta charset="UTF-8">

<script>

    function pulaLinha() {

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

    function mostra(texto) {

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

    var numero = 30;
    while(numero <= 40) {

        if(numero != 33 && numero != 37) {
            mostra(numero);
        }

        numero += 1;
    }

    mostra("Fim.")

</script>
solução!

É mais fácil inverter a lógica, se o número ser igual ao número 33 ou 37 apenas incrementamos, ou seja, na próxima vez que chamarmos mostra(numero); o número estará com incrementado em 1, sendo assim quando chegar ao 33 vira 34 e assim pula o 33, quando ser 37 incrementa em 1 e vira 38, pulando o 37.

<script>
    function pulaLinha() {
        document.write("<br>");
    }

    function mostra(frase) {
        document.write(frase);
        pulaLinha();
    }

    var numero = 30;
    while(numero <= 40) {
        if (numero == 33) {
            numero = numero + 1;
        }
        if (numero == 37) {
            numero = numero + 1;
        }
         else {
            mostra(numero);
            numero = numero + 1
        }
    }
</script>

Há uma forma simplificada:

<script>
    function pulaLinha() {
        document.write("<br>");
    }

    function mostra(frase) {
        document.write(frase);
        pulaLinha();
    }

    var numero = 30;
    while(numero <= 40) {
        if (numero == 33 || numero == 37) { // Se numero ser igual a 33 ou 37:
            numero++; // Mesma coisa que 'numero = numero + 1'
        } else {
            mostra(numero);
            numero++;
        }
    }
</script>

Boaa valeu pela dica do codigo mais simples !