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

problema no looping.

Não encontro o erro no meu programa. Já reli dezenas de vezes. Alguém poderia me informar?

 <meta charset="UTF-8">
<input/>
<button>OK</button>

<script>
    function sorteio () {
    return Math.round(Math.random()*10);

}

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

        var aleatorio = sorteio();
if ( aleatorio ==! 0) {

        var achou = false; 

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

}

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

}

}
}
    return segredos;
}


    var segredos = sorteiaNum(4);

    console.log(segredos);

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

    var chegou = false

    function verifica () {

        for(posicao = 0; posicao < segredos.length; posicao++){
            if(input.value == segredos[posicao]) {
                alert("VOCÊ ACERTOU!!!!!!");
                chegou = true
                break;
            } 

            if(chegou == false) {
                alert("ERROU!!!!!!!!");
                break;

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

}

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

    button.onclick = verifica; 


</script>
2 respostas
solução!

Oi Clara, é apenas um detalhe seu erro, na função verifica() você esta percorrendo a lista de segredos para verificar se o digitado foi encontrado na lista, porém para cada elemento pesquisado na lista você verifica se ele esta na lista e logo depois já testa de achou ou não, antes de fechar o loop do for, simplesmente mover a verificação do se achou ou não para fora do loop, assim o break também nao será necessario.

            if(chegou == false) {
                alert("ERROU!!!!!!!!");
                break;

            }

Segue o codigo arrumado.

<meta charset="UTF-8">
<input/>
<button>OK</button>

<script>
    function sorteio() {
        return Math.round(Math.random() * 10);

    }

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

            var aleatorio = sorteio();
            if (aleatorio == !0) {

                var achou = false;

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

                }

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

                }

            }
        }
        return segredos;
    }

    var segredos = sorteiaNum(4);
    console.log(segredos);
    var input = document.querySelector("input");

    function verifica() {
        var chegou = false;
        for (posicao = 0; posicao < segredos.length; posicao++) {
            if (input.value == segredos[posicao]) {
                alert("VOCÊ ACERTOU!!!!!!");
                chegou = true
                break;
            }

        }
        if (chegou == false) {
            alert("ERROU!!!!!!!!");
        }
        input.value = ""
        input.focus();
    }

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

    button.onclick = verifica;


</script>

Uma dica, tente formatar corretamente os inicio e fechamentos de loop e ifs para conseguir identificar esse erros mais facilmente, como eu indentei acima.

Espero ter ajudado.

Muito obrigada, Henrique. Eu utilizo o editor de texto que já vem no Linux. Porém, acabo de baixar o sublime para me ajudar nessa questão de organização.

Abrçs!