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

Dúvida no Ex. 1 da Aula 7 - Desafio final

Fala galera, beleza?

Estou com algumas dúvidas. Estou tentando escrever o desafio, mas encontrei algumas dificuldades:

  1. Como faço para guardar o valor aleatório dentro do vetor apenas se ele não for igual a um valor existente? Sei que funciona com laço e comparação, mas estou há tempos tentando e sempre acaba colocando o mesmo valor nas 6 posições do vetor.

  2. Como faço para que o cada botão execute de uma vez só? Coloquei 2 botões no código: um para o usuário apertar quando quiser começar a "brincar" (Então aparece os alerts coletando os dados) e outro para mostrar o resultado, mas depois que coloquei este último no código, nenhum funciona mais...

Não sei bem como explicar minhas dúvidas, mas segue meu código pra que analisem e tentem ver o que poderia arrumar:

<!DOCTYPE html>

<html>
    <head>
        <meta charset="UTF-8">
        <title>Loteria</title>
        <tt>
            <br>
            <hr width="30%" align="center">
            <hr width="40%" align="center">
            <h1 align="center"><font size="7">LOTERIA!</font></h1>
            <hr width="40%" align="center">
            <hr width="30%" align="center">
            <br>
            <br>
            <font size="4">
                Nossa função é simular uma loteria. Para isso, desenvolvemos nosso algoritmo que gera 6 números aleatórios entre 1 e 60!<br>
                Sua função é simples: <b>Escreva a sua apostas nas janelas de alerta e teste sua sorte!</b> Nós diremos se você é o vencedor...<br>
                <br>
                Assim que estiver pronto, clique no botão abaixo.
                <br>
                <br>
            </font>
        </tt>
        <input type="submit" value="Vamos lá!" id="botao" />
        <br>
        <br>
        <input type="submit" value="Resultado" id="botao2" />

    </head>

    <body>
        <script>
<!-- OBTENÇÃO DOS VALORES ALEATÓRIOS -->

            var numerosVetor = [];
            var numeroTemp = 0;
            var cont1 = 0;
            while (numerosVetor.length < 6)
            {
                numeroTemp = Math.round (Math.random () * 100);
                if (numeroTemp < 60)
                {
                    numerosVetor [cont1] = numeroTemp;
                    cont1++;
                };
            };

<!-- OBTENÇÃO DOS CHUTES DO USUÁRIO -->

            var chute = [];
            var botao = function ()
            {
                alert ("Ótimo! Vamos lá...")
                for (var i = 0; i <6; i++)
                {
                    var valor = parseInt (prompt ("Insira seu " + (i + 1) + "º chute:"));
                    if (valor > 60)
                    {
                        alert ("O número escolhido deve ser maior ou igual a 1 e menor ou igual a 60! Vamos recomeçar...");
                        return;
                    }
                    else
                    {
                        chute [i] = valor;
                    }
                }
                alert ("Os valores escolhidos são: " + chute [0] + ", " + chute [1] + ", " + chute [2] + ", " + chute [3] + ", " + chute [4] + " e " + chute [5] + ".");
            };
            var botaoIniciar = document.getElementById ("botao");
            botaoIniciar.onclick = botao;

<!-- EXECUÇÃO DA COMPARAÇÃO ENTRE OS CHUTES E OS VALORES ALEATÓRIOS -->            

            var resultado = [];
            for (cont2 = 0; cont2 < 6; cont2++)
            {
                for (cont3 = 0; cont3 < 6; cont3 ++)
                {
                    if (chute [cont2] == numerosVetor [cont3])
                    {
                        resultado [cont2] = chute [cont2];
                    };
                };
            };
            var botao2 = function ()
            {
                if (resultado.length != 0)
                {
                    document.write ("<br><br>");
                    document.write ("<tt>Você acertou " + resultado.length + " valores. São eles: " + resultado);
                    document.write ("<hr> <tt> Resultado do sorteio: " + numerosVetor + ".");
                }
                else 
                {
                    document.write ("<br><br>");
                    document.write ("<tt>Você não acertou nenhum valor.");
                    document.write ("<hr> <tt> Resultado do sorteio: " + numerosVetor + ".");
                };
            };
            var botaoResultado = document.getElementById ("botao2");
            botaoIniciar.onclick = botao2;
        </script>
    </body>
</html>

Agradeço desde já a ajuda de vocês. Estou quebrando a cabeça com esse exercício há horas e não consigo. Sei que não estou complicando meu código, mas sem dificuldade não tem ganho!

3 respostas
solução!

Oi Guilherme, tudo bem? Vamos ver...

1 - Você precisa verificar os numeros já inseridos no vetor e só inserir caso ele não exista. Como fazer isso? Percorra o vetor e faça um if a cada iteração, comparando o valor atual com cada um dos valores dentro do vetor, caso não exista o valor, você insere, algo como:

valor = rand();
valor_nao_existe = false;

for(i = 0; i < vetor.length; i++){
    if( vetor[i] != valor ){
        valor_nao_existe = true
    }
}

if(vaor_nao_existe){
    vetor[] = valor;
}

Podemos simplificar o código acima, mas pra entender acho que assim já está bom.

2 - Você está atribuindo a ação dos dois botões a mesma váriavel, crie variaveis diferentes:

Como está:

var botaoIniciar = document.getElementById ("botao");
botaoIniciar.onclick = botao;

var botaoResultado = document.getElementById ("botao2");
botaoIniciar.onclick = botao2;

Como deveria estar:

var botaoIniciar = document.getElementById ("botao");
botaoIniciar.onclick = botao;

var botaoResultado = document.getElementById ("botao2");
botaoResultado.onclick = botao2;

Entendeu? Espero ter ajudado! Continue estudando.

Entendi cara, valeu. A parte 2 eu já tinha testado colocar outra variável e não funcionou ainda, mas vou tentar de novo hoje a noite :)

Oi Guilherme, não tinha notado antes, mas dê uma verificada, na chamada de funções remova esse espaço em branco:

Atual:

var botaoIniciar = document.getElementById ("botao");
botaoIniciar.onclick = botao;

var botaoResultado = document.getElementById ("botao2");
botaoResultado.onclick = botao2;

Novo:

var botaoIniciar = document.getElementById("botao");
botaoIniciar.onclick = botao;

var botaoResultado = document.getElementById("botao2");
botaoResultado.onclick = botao2;

Procure organizar mais o código e verifique se no console do navegador não há uma mensagem de erro, ela pode te ajudar a encontrar e resolver o problema.

Abraço.