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

Dúvida validações Desafio Final Aula 7

Bom dia, desejo fazer algumas validações no exercício, já esta rodando legal, porém sem validar os números digitados pelo usuário (Bloquear repetidos, 0 e menores que 60) e sem validar os números sorteados (maiores que 0 e não repetidos). Obrigado desde ja... Segue o código...

<meta charset="utf8">

<script>
var pulaLinha = function() {
    document.write("<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("Digite 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:"));
    console.log(numerosJogados);

}    

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


var acertos = quantidadeAcertos(numerosJogados, numerosSorteados);

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


</script>
4 respostas

Desculpem, nao foi o código... para adicionar o código ele tem que estar entre tres crases? ex:

''' codigo

''' É isso? Tentei desta forma e nao apareceu nada

Opa agora foi...

<meta charset="utf8">

<script>
var pulaLinha = function() {
    document.write("<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("Digite 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:"));
    console.log(numerosJogados);

}    

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


var acertos = quantidadeAcertos(numerosJogados, numerosSorteados);

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


</script>
solução!

Oi Glauco, td bem? Então, eu acredito que a melhor abordagem seria mudar a seguinte parte do código.

for(i = 0; i < 6; i++) {
    numerosJogados[i] = parseInt(prompt("Diga qual o " + (i + 1) + " número do seu jogo:"));
    console.log(numerosJogados);

}

Esse for ele vai sempre incrementar o i a cada iteração, o que estou pensando aqui é que quando não passar nas validações deveríamos não incrementá-lo, por isso acredito que o ideal seja trocar por um while e aí sim colocar as condições das validações. Tô pensando em algo assim:

var i = 0;
while(i < 6) {
    numerosJogados[i] = parseInt(prompt("Diga qual o " + (i + 1) + "                     número do seu jogo:"));
    var ehRepetido = i > 0 && numerosJogados[i] == numerosJogados[i - 1];
    var ehZero = numerosJogados[i] == 0;
    var maiorQueSessenta = numerosJogados[i] > 60;

    if( ehRepetido || ehZero || maiorQueSessenta ) 
        continue;
    else {
        i++;
        console.log(numerosJogados);
    }
}

Que tal? (:

Abraços!

Ok, muito obrigado, resolvido, valeu!