1
resposta

No final da erro no verifica

No final o console mostra a frase" Unexpected end of input "

<meta charset="utf-8">

<input/>
<br>
<button>Compara</button>

<script>

  function sorteia() {

    return Math.round(Math.random() * 10)

  }





   function sorteiaNumero(quantidade) {

        var segredos=[];

        var numero=1

        while(numero<=quantidade) {

          var numeroAleatorio=sorteia()
              if (numeroAleatorio !== 0) {var  achou=false

           for (var posição=0; posição<segredos.length;posição++ ) {

            if (segredos[posição]==numeroAleatorio) { 

                                   achou=true
                                    break;}



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

         }

    }




       return segredos;

  } 




    var segredos=sorteiaNumero(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!! ");

                                              achou=true;
                                                break;}
   } 

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



      }



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

button.onclick=verifica;





















</script>
1 resposta

Oi VALTEIR ALVES GOMES o erro acontece bem antes, se você perceber não tá aparecendo o resultado desse log:

 var segredos=sorteiaNumero(5);
    console.log(segredos)

Isso se deve por um erro de lógica nessa função.

Mas antes de tudo eu gostaria, de te mostrar como a falta de indentação no código nos leva a cometer erros, veja como uma simples arrumada nos permite visualizar melhor onde poderia estar o problema:

<meta charset="utf-8">

<input/>
<br>
<button>Compara</button>

<script>

    function sorteia() {
        return Math.round(Math.random() * 10)
    }

    function sorteiaNumero(quantidade) {
        var segredos=[];
        var numero=1

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

            for (var posição=0; posição<segredos.length;posição++ ) {
                if (segredos[posição]==numeroAleatorio) { 
                    achou=true;
                    break;
                }

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

    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 input=document.querySelector("input");
    var button=document.querySelector("button");
    input.focus();
    var segredos=sorteiaNumero(5);
    console.log(segredos);

    button.onclick=verifica;

</script>

Vamos lá. Primeiro vamos olhar pra dentro while da função sorteiaNumeros:

while(numero<=quantidade) {
    var numeroAleatorio=sorteia();
    var  achou=false;
        if (numeroAleatorio !== 0) {
        for (var posição=0; posição<segredos.length;posição++ ) {
            if (segredos[posição]==numeroAleatorio) { 
                achou=true;
                break;
            }
        }
        if (achou==false) { 
            segredos.push(numeroAleatorio);
            numero++;
        }
    }
}

A variável achou tem que receber o valor false antes do if, e depois do if que checa se o número é diferente de 0 eu tenho um for qu epor sua vez tem outro if dentro dele, que se o numero já existir ele marca como true, logo em seguida eu fecho esse if e fecho o meu for tmb. E tenho um outro if abaixo somente pra checar se ele achou o número ou não se não achou eu adiciono o númeroAleatorio e não chamo a função novamente, só fazer essas correções seu código vai funcionar normalmente.

Espero ter ajudado e bons estudos.