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

Condição para excluir o zero

Olá a todos! O professor no vídeo explica uma forma de tirar o zero do sorteio. Adiciona mais um bloco "if" com a condição e põe o "for" e o outro "if" pra dentro dele. Minha dúvida é: Não seria mais simples só adicionar a condição no parâmero do segundo "if"? Eu fiz no meu e deu certo. No caso gostaria de saber há algum problema dessa forma ou há algum tipo de erro de lógica? Desde já agradeço.

Todo o código:

<meta charset="UTF-8">

<input/>
<button>Compare com o meu segredo</button>

<script>
    function sorteia() {

       return Math.round(Math.random() * 10);

    }

    function sorteiaNumeros(quantidade) {

        var segredos = [];

        var numero = 1;

        while(numero <= quantidade) {

              var numeroAleatorio = sorteia();
              var achou = false;

              if (numeroAleatorio !== 0) {
                     for(var posicao = 0; posicao < segredos.length; posicao++) {

                           if(segredos[posicao] == numeroAleatorio){
                                achou = true;
                                break;
                           }

                     }

                     if (achou == false) {
                           segredos.push(numeroAleatorio);
                           numero++;
                     }
              }

        }

        return segredos;

    }

    var segredos = sorteiaNumeros(3);

    console.log(segredos);

    var input = document.querySelector("input");
    input.focus();

    function verifica() {

       var achou = false;

       for(var posicao = 0; posicao < segredos.length; posicao++) {

              if(input.value == segredos[posicao]) {

                     alert("Você ACERTOU!");
                     achou = true;
                     break;
              } 
       }

       if(achou == false) {

              alert("Você ERROU!");
       }

       input.value = "";
       input.focus();

    }

    var button = document.querySelector("button");

    button.onclick = verifica;

</script>

Minha solução:

function sorteiaNumeros(quantidade){
        var segredos = [];
        var numero = 1;

        while(numero <= quantidade){
            var numeroAleatorio = sorteia();
            var achou = false;

            for(var posicao = 0; posicao < segredos.length; posicao++){
                if(segredos[posicao] == numeroAleatorio){
                    achou = true;
                    break;
                }
            }

            if(achou == false && numeroAleatorio != 0){
                segredos.push(numeroAleatorio);
                numero++
            }
        }
        return segredos;
    }
2 respostas
solução!

Oi, Rodrigo, como vai?

Sem problemas! A única diferença é que na primeira solução a condição do número ser diferente de 0 impede que exista uma pesquisa desnecessária na lista de segredos, já na segunda solução isso não acontece, pois a verificação ocorre apenas antes de inserir o número aleatório na lista.

Abraços e bons estudos!

Compreendi! Valeu pela atenção, camarada! Abraços!