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

O meu código continua gerando número duplicados

Boa tarde pessoal, eu já procurei pelo código mas não consegui enxergar onde está o erro que faz ele repetir os números.

<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();

                if (numeroAleatorio !== 0) {

                    var achou = false;

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

Comigo funcionou depois de organizar 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();

            if (numeroAleatorio !== 0) {

                var achou = false;

                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>
solução!

Olá Alexandre, tente tirar esse ponto e vírgula entre parêntese e chave:

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

Comigo deu certo.

Welton e Luana, os dois jeitos deram certo. Obrigado pela ajuda o/

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software