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

O programa continua a gerar 0s e números repetidos. O que deu errado?

<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(sorteia());
                numero++;
            }
        }
    }

    return segredos;
}

var segredos = sorteiaNumeros(5);

console.log(segredos);

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

function verifica(){


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

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

            alert("você ACERTOU!");
            break;

        } 
        if (i == (segredos.length - s1)) {
            alert("você ERROU!!!!!");

        }

    }


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

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

button.onclick = verifica;


</script>
2 respostas

Rafael, Bom dia!

Coloca teu códgio entre três crases ou aperta ctrl+alt+c e colca o código dentro.

Abraço

solução!

Olá boa tarde.

Na parte do programa abaixo você chama diretamente a função sorteia() diferentemente do exemplo que chama a variável numeroAleatorio e isso está dando os resultados de 0s e repetições de números.

if(achou == false){

                segredos.push(sorteia());
                numero++;
            }

deve acontecer isso pq no caso do seu código ele não irá passar pelo if que verifica se o numeroAleatorio é diferente de 0, pois ele está indo diretamente para a função sorteia() gerando os números aleatórios pelo retorno do Math.round.

if(numeroAleatorio !== 0){

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

Não sei se ficou clara a explicação, esse exercício ficou complexo pra mim por ter muitos passos de verificação, mas acredito que seja esse o ponto.