Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

meu código roda algumas vezes, depois trava

Tentei inserir a restrição do Zero um pouco diferente da aula. Inseri um operador condicional junto o if "if(segredos[posicao] == numAleatorio || segredos[posicao] == 0 )

O programa roda normal, mas se eu recarregar o programa muitas vezes consecutivas, ele trava. Provavelmente entra em loop infinito, mas gsotaria de entender o pq desse comportamento.. OBG

<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 numAleatorio = sorteia();
            var achou = false;

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

                    if(segredos[posicao] == numAleatorio || segredos[posicao] == 0 ) {
                        achou = true;
                        break;
                    }
                }


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

        } 


        return segredos;
    }

insira seu código aqui


        var segredos = sorteiaNumeros(5); 


        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 o n° "+segredos[posicao]+" é um dos segredos");
                var achou = true;
                break;
            }
        }                

            if (achou==false){
                alert("Você ERROU");
            }
        input.focus();
        input.value = "";
        }

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

    button.onclick = verifica;

</script>
1 resposta
solução!

Como você não verifica se o numAleatorio é igual a zero, quando ele entrar no for, ele não vai entrar no if

if(segredos[posicao] == numAleatorio || segredos[posicao] == 0 ) {
                        achou = true;
                        break;
                    }

Sendo assim, o 0 vai ser adicionado a sua lista de segredos. Assim que isso acontecer seu programa vai entrar num loop infinito, pq ele vai verificar que uma posição da lista de segredos é 0; o achou vai receber true, e nenhum número vai ser adicionado a lista, independente de qual era o número aleatório sendo testado.Eu não sei se consegui explicar bem, mas qualquer dúvida manda mais mensagens que a gente vai tentando esclarescer.