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

Dúvida no desafio de Lógica de Programação

Olá pessoal, consegui fazer o curso, entendi todas as colocações, mas na hora do desafio realmente achei bem desafiador e acabei vendo a resposta do instrutor, porém não consegui compreendê-la, talvez o fato de ter um for aninhado, segue o código, caso alguém possa me explicar melhor, lembrando que pretendo realizá-lo, provavelmente de outra maneira.

Agradeço desde já! =)

<meta charset="UTF-8">
<script>
var pulaLinha = function() {
    document.write("<br><hr><br>");
}

var mostra = function(frase) {
    document.write(frase);
    pulaLinha();
};

var quantidadeAcertos = function(jogados, sorteados) {
    var acertos = 0;
    for(i = 0; i < 6; i++) {
        for(j = 0; j < 6; j++) {
            if(jogados[i] === sorteados[j]) {
                acertos++;
            }
        }
    }
    return acertos;
}

alert("Jogue na mega-sena! Diga quais são os 6 números do seu jogo.");
var numerosJogados = [];
for(i = 0; i < 6; i++) {
    numerosJogados[i] = parseInt(prompt("Diga qual o " + (i + 1) + " número do seu jogo:"));
}

alert("Muito bom! Agora vou sortear os números premiados. Clique em ok para eu fazer o sorteio.");
var numerosSorteados = [];
for(i = 0; i < 6; i++) {
    numerosSorteados[i] = Math.round( Math.random() * 60 );
}

var acertos = quantidadeAcertos(numerosJogados, numerosSorteados);

mostra("Você jogou os números " + numerosJogados);
mostra("Os números sorteados foram " + numerosSorteados);
mostra("Você acertou " + acertos + " número(s)");

</script>
6 respostas

Minha primeira tentativa havia sido, porém vou tentar de outra maneira sem ser através dos inputs ^^

<meta charset="UTF-8" />
<h3>Seja bem-vindo à loteria dos malandros</h3>
<p>Clique nesse botão para gerar os números!
(Obs, eles irão aparecer no seu console)</p>

<input type="submit" value="Gerar!" id="gerar" /><br>

<h4>Aqui você vai dar o seus palpites danado</h4>
<input type="text" id="palpite" size="2" />
<input type="submit" value="Ok" id="ok" />


<script>

var sorteados = [];
var chutes = [];

var gerarNumeros = function() {
    for(var i = 0; i < 6; i = i + 1) {
        var num = Math.round(Math.random()*100)
        if(num < 1 && num > 60) {
            num = Math.round(Math.random()*100);
            return;

        }
    }
    sorteados.push(num);
    console.log(sorteados);
}

var gerar = document.getElementById("gerar");
gerar.onclick = gerarNumeros();



</script>

Tu quer que a gente comente o teu código?

Esse que postei não, viajei completamente na elaboração dele, por não ter me ligado na matemática em si da função Math.random().

O do professor sim, não entendi a questão do for aninhado...

solução!

O for aninhado serve para tu percorrer os dois vetores que foram criados, um com os números que tu escolheu e o outro com os números sorteados. Enquanto o primeiro for estiver em 1, o segundo vai percorrer de 1 a 6, procurando uma correspondência com o primeiro item do vetor. E assim vai indo, até percorrer todos os itens do vetor.

Outra maneira de fazer é usando 2 while. A lógica é a mesma.

Roberto, obrigado cara, baseado na sua explicação consegui gerar o for que fizesse a busca entre os dois arrays, muito interessante... não sabia dessa possibilidade, fiz de forma simples o código:

Me indica alguma oportunidade de melhoria, ou alguma dica pra me passar.

<meta charset="UTF-8">

<h3>Bem vindo a Loteria dos malandros!</h3>
<script>

var pulaLinha = function() {
    document.write("<br>");
}

var mostra = function(frase) {
    document.write(frase);
    pulaLinha();
}

    var sorteados = [];
    for(i = 0; i < 6; i++) {
        sorteados[i] = Math.round(Math.random()*60);
        console.log(sorteados);
    }

    var chutes = [];
    for(i = 0; i < 6; i++) {
        chutes[i] = parseInt(prompt("Digite um número de 1 a 60"));
        console.log(chutes);
    }

    var acertos = 0
    for(i = 0; i < 6; i++) {
        for(j = 0; j < 6; j++) {
            if(sorteados[i] === chutes[j]) {
                acertos = acertos + 1;
                console.log(acertos);
            }
        }
    }

mostra("<br><h1>Você acertou " + acertos + " números!</h1>");

</script>