3
respostas

O "zero" continua aparecendo

Olá a todos!

Segui todos os passos da aula (embora tenha tido muitas dificuldades de compreensão) e acho que meu código abaixo está exatamente igual ao que foi ensinado, PORÉM, o "zero" (que nos foi proposto que não fosse considerado um "número válido") ainda aparece em alguns recarregamentos que faço na página.

Para "visualizar isso melhor", eu estabeleci que o programa me "sorteasse" 9 números (function sorteiaNumeros), a fim de observar se ele "sortearia" aleatoriamente todos os números de 1 a 9, sem repetir nenhum.

De fato, ele não repete, mas o "zero" ainda aparece em algumas combinações.

Onde estou errando?

Outra coisa: posso escolher a quantidade de números que quiser para minha lista? Mais de 10, por exemplo?

Segue abaixo meu código.

Muito obrigado!

Carlos

<meta charset="UTF-8">
<input/>
<button>"Compare com o meu segredo</button>

<script>

    function sorteio(){

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

    }

    function sorteiaNumeros(quantidade){

        var segredos = [];
        var numero = 1;
        while (numero <= quantidade){

            var numeroAleatorio = sorteio();
            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(9);

    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>
3 respostas

Boa noite, Carlos! Como vai?

Mas a ideia é essa mesmo! A função realmente deve sortear um número aleatório entre 0 e 10. Se ela está fazendo isso, então está correto!

Qualquer coisa é só falar!

Grande abraço e bons estudos, meu aluno!

Obrigado pela resposta, Gabriel.

Porém, pela função "if(numeroAleatorio !== 0)", o "zero" não deveria ser sorteado na "Math.round(Math.random() * 10)". Essa é minha dúvida.

Não entendo por que ainda aparece.

Opa, Carlos! Agora entendi, não tinha ficado claro que sua dúvida era essa. Eu entendi que vc se referia à função sorteio(). Essa, do jeito que está programada, deve gerar números de 0 a 10. Já em relação à função sorteiaNumeros() que preenche o array, essa sim não deveria colocar 0 no array. Contudo, vc colocou o if citado no lugar errado dentro do código. O correto deveria ser como a seguir.

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++;

                }

}

Veja se dessa forma as coisas funcionam da forma como vc esperava.

Qualquer coisa é só falar!

Grande abraço e bons estudos, meu aluno!