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

Meu código ainda repete numero no array

<input/>
<button>Compare com o meu segredo</button>

<script>
    function sorteia(){
        return Math.round(Math.random() * 10);
    }
    function sorteiaNumeros(quantidade){
        var segreds = [];

        var numero = 1;

        while(numero<=quantidade){

            var numeroAleatorio = sorteia();
            var achou = false;

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

                if(segreds[posicao] == numeroAleatorio){
                    achou = true;
                    break;
                }
            }

            if(achou == false){
                segreds.push(numeroAleatorio);
                numero++;
            }
        }
        return segreds;
    }
</script>
8 respostas

Boa Tarde Anna Paula, tudo bom?

Testei seu código aqui e a unica coisa que ele continua repetindo é o numero 0. E para que isso não aconteça , basta você acrescentar um if informando que só pode continuar caso sortear um numero diferente de 0 .


while (numero<=quantidade){
            var numeroAleatorio = sorteia();
            var achou = false;

!= Representa o sinal de diferença

//Abaixo condição
if (numeroAleatorio != 0){

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

                if(segreds[posicao] == numeroAleatorio){
                    achou = true;
                    break;
                 }
             }

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

Abaixo o codigo completo para você comparar



<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 segreds = [];

        var numero = 1;

        while(numero<=quantidade){

            var numeroAleatorio = sorteia();
            var achou = false;

            if(numeroAleatorio != 0){

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

                    if(segreds[posicao] == numeroAleatorio){
                        achou = true;
                        break;
                    }
                }

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

    var segreds = sorteiaNumeros(7);
    console.log(segreds);


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

    function verifica (){

        var achou = false;

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

            if(input.value == segreds[posicao]){

                alert("Acertou!")
                achou = true;
                break;
            }

        }

        if(achou == false){

            alert("Errou!")
        }

        input.value = "";
    }

    var button = document.querySelector ('button');
    button.onclick = verifica;
</script>

Então, na vdd eu não coloquei essa parte do código ainda pq tava repetindo outros número além do zero, mas quando eu coloquei pra não aparecer o zero continuou repetindo os números haoahaoa

Coloca todo seu código aqui para gente analisar

Oi Anna Paula de Jesus Braz, tudo bem? Bom com o código que você postou não consegui identificar qual a sua dúvida ou dificuldade, poderia postar o código completo incluindo a parte onde você chama a função sorteiaNumeros, para que eu possa verificar o erro que tá acontecendo. Fico no aguardo.

Segue o codigo inteiro, sem o zero.

<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 segreds = [];

        var numero = 1;

        while(numero<=quantidade){

            var numeroAleatorio = sorteia();
            if(numeroAleatorio != 0){

                var achou = false;

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

                    if(segreds[posicao] == numeroAleatorio){
                        achou = true;
                        break;
                    }
                }

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

    var segredos = sorteiaNumeros(7);

    segredos.push(sorteia());
    console.log(segredos);

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

    function verifica(){

        var achou = false;
        for(var posicao = 0; posicao < segredos.length; posicao++){
            if(inputTag.value == segredos[posicao]){
                alert("Voce Acertou");
                achou = true;
                break;
            } //else {
                //alert("voce errou.");
            //}

        }

    if (achou==false){
        alert("Voce ERROU.");
    }

    inputTag.value = "";
    inputTag.focus();

    }

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


</script>
solução!

Boa noite Ana. No seu código você colocou dois

segredos.push(sorteia());

Um dentro da função sorteiaNumeros e outro do lado de fora.

Retira segredos.push abaixo , vai funcionar normal

 var segredos = sorteiaNumeros(7);

    segredos.push(sorteia());   //<--- Este aqui!
    console.log(segredos);

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

Boa Rafael é isso mesmo Anna se você por um

console.log(segredos) abaixo da instrução que chama a função sorteiaNumeros vai perceber que os números não vem repetidos eles ficam repetidos depois quando um número a mais porque o certo seriam 7 e ele acresccenta mais um ficando 8 é adicionado no final do array.Como esse número não passa pelo nosso tratamento de dentro da função que verifica se ele já foi sorteado ele repete.

    var segredos = sorteiaNumeros(7);
    console.log(segredos); <-- Aqui ta tudo certo
    segredos.push(sorteia());   //<--- Aqui mais um numero é adicionado
    console.log(segredos);

AHHHHHHHHHHHHHHHHHHH

Nossa verdade - Valeu gente <3