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

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

A resposta sugerida para o exercício permite que o usuário digite um número que não esteja entre 1 e 60 e também permite que números se repitam. Fiz testes e comprovei que ocorre. Fiz umas modificações na resposta. Segue o código.

<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;
}

var numeroValido = function(numero) {
    if (numero >= 1 && numero <= 60) return true;
    else return false;
}

var numeroNaoRepetido = function(numero, array) {
    for(var i = 0; i < array.length; i++) {
        if(array[i] == numero) return false;        
    }
    return true;
}

//programa inicia aqui!!
alert("Jogue na mega-sena! Diga quais são os 6 números do seu jogo.");
var i = 0;
var numerosJogados = [];
while(numerosJogados.length < 6) {
    var numero = parseInt(prompt("Diga qual o " + (i + 1) + " número do seu jogo:"));
    //verifica se número está entre 1 e 60
    if (numeroValido(numero) == false) {
        alert("Número jogado deve estar entre 1 e 60. Jogue outro!")
        continue;
    }
    //verifica se o número é repetido
    if (numeroNaoRepetido(numero, numerosJogados) == false ) {
        alert("Já jogou esse número. Jogue outro!");
        continue;
    }
    //insere no array
    numerosJogados.push(numero);
    i++;
}

alert("Muito bom! Agora vou sortear os números premiados. Clique em ok para eu fazer o sorteio.");
var numerosSorteados = [];
while(numerosSorteados.length < 6) {
    var numero = Math.round( Math.random() * 60 );
    //verifica se o número é repetido
    if (numeroNaoRepetido(numero, numerosSorteados) == false ) continue;
    //insere no array
    numerosSorteados.push(numero);
}

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>
2 respostas
solução!

Oi Maicon, tudo bem? Vejo que você foi mais além do que o exercício pedia e isso é bom, pois você está praticando ainda mais sua lógica. Porém espero que entenda que sua sugestão é válida, mas não invalida o exercício, ou seja, não o faz estar errado, pois o instrutor não definiu tais regras. Entende?

Contudo, parabéns! Continue estudando!Bons estudos...

Tudo bem. Entendi o que disse, o instrutor não definiu essas regras que levantei. Fui ler o enunciado do exercício novamente e ele não define as regras que levantei, então a resposta dada está correta. Na primeira leitura, achei que estariam implícitas essas regras, então desenvolvi minha solução e verificando a resposta, notei essas "inconsistências" e resolvi adaptar minha solução na resposta. Obrigado pelo esclarecimento. Abraço.