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

Meu código e o código da transcrição não funcionam como deveriam

Durante a aula eu sempre vou fazendo o código junto com o professor. Lá perto do final meu código exibia o seguinte no console: (3) [4, 10, 7] , ou seja, ele sorteia os 3 números entre colchetes, mas o 3 entre parenteses é fixo e é a resposta. Beleza, achei que tinha feito alguma lambança, revisei o código todo e nada de consertar o problema. Como último recurso, apaguei o meu código todo e colei o código final da transcrição da aula e testei. O problema persistiu. Como eu resolvo isso?

Grato

8 respostas

Olá,

Poderia copiar e colar seu código aqui para a gente ver?

Espero poder ajudar! Abs

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

Como eu disse no meu post inicial, meu código e o código transcrito da aula são idênticos, então ambos não funcionam.

Boa noite!

Tenta com esse código, por favor:


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

E aí dá uma resposta se foi corrigido o erro...

Não, o resultado continua igual. O 3 está fixo e só os outros números mudam:

(3) [4, 2, 10]

Ah cara, mas esse 3 só significa o número de variáveis que serão sorteadas no array. Se você modificar o código na linha 46: var segredos = sorteiaNumeros(3); para var segredos = sorteiaNumeros(5);

Agora seu console exibirá: (5)[8, 6, 9, 4, 1], ou seja o número de variáveis sorteadas entre os (), bem como a variáveis sorteadas entre os [].

Mas aí que está, o 3 é sempre o número correto. Não sorteia, ele fica fixo.

solução!

Olá amigo, eu rodei o seu código aqui e notei o seguinte comportamento:

Quando eu rodei ele com o numero de arrays em 3 , as vezes ele gera o numero 3 sim, mas as vezes não. Ai quando você abre o console.log aparece assim: (3) [4, 2, 10] , o 3 no caso representa o numero de listas então ele vai ser fixo mesmo, os outros 3 numeros que devem aparecer aleatoriamente. Quando você digitar 3, e olhar no console.log que um desses numeros que estão fora do parenteses() é 3 foi porque um dos números aleatórios gerado naquela sessão foi 3.

Para que os números aleatórios mudem você tem que recarregar a página , se não os números que estão fora dos parenteses não vão mudar, você pode notar que nesse caso não só o 3 continua o mesmo, mas os outros também.

Coloquei o comando console.log abaixo do for que realiza a escolha dos números e com isso consegui ver quais numeros estão sendo sorteados. Ai abri o console para ver :

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Note que dessa vez foi sorteado os numeros 10,2,4 , portanto como coloquei o 3 eu errei.

Agora eu recarreguei a página algumas vezes e quando vi que no console.log apareceu o 3, eu digitei e acertei.

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Obrigado aos que responderam mas a lambança foi completamente minha. Eu estava interpretando tudo errado no console. Agora foi.