
Bom, galera, to estudando muito mas algumas vezes ainda me falha a lógica do negócio e tenho de recorrer a vocês.
Vamos lá:
Declarei as variáveis:
<script> sugestao = new Array(); numeros = new Array(); intInicio = 1; intFim = 60; j =0; res = ""; ordenal = new Array("primeiro", "segundo", "terceiro", "quarto", "quinto", "sexto"); aposta = "";
Aqui o problema:
for(i=0; i<6; i++){ numeros[i] = prompt("Digite o " + ordenal[i] + " número"); for(j=0; j<6; j++){ if(numeros[i] == numeros[j] && i!=j){alert("Você já digitou esse número"); j=6; i--;} } if(numeros[i] > 60 || numeros[i] == ""){ alert("Digite um número entre 1 e 60"); i--; } else {aposta += " " + numeros[i];} } alert(aposta);O primeiro for, vai percorrer o array, e guardar os valores digitados na posição [i]. Beleza.
Vamos esquecer o segundo for, por enquanto.
no if(numeros[i] > 60 || numeros[i] == "" eu verifico se o número é maior que 60 ou está vazio, coisa que não pode já que é um sorteio da megasena. Se for maior ou vazio, eu boto a mensagem e diminuo um no contador para ele voltar para a mesma posição.
No else, eu guardo o número na variável aposta, se ele for maior ou vazio, eu não vou guardar ele já que está no else.
Por ex:
"Digite o primeiro número" -> 10
"Digite o segundo número -> 20
"Digite o 3 número" -> 30
"Digite o 4número -> 40
"Digite o 5 número" ->50
"Digite o 6 número -> 60
Resultará em um alert: 10, 20, 30, 40, 50 e 60.
Se for maior que 60, por exemplo, 70, esse número não será guardado na variável "aposta", já que só é guardado, quem não é vazio ou maior que 60.
Acontece que eu fui verificar também, se o número digitado não foi igual a nenhum digitado antes, pois na megasena não pode por 2 números iguais. daí vem a parte:
for(j=0; j<6; j++){ if(numeros[i] == numeros[j] && i!=j){alert("Você já digitou esse número"); j=6; i--;} }ele percorre o array usando j, verifica se alguma posição de i é igual a posição de j, avisa que ja foi digitado, sai do FOR (j=6) e volta uma posição no i, pro usuário digita-la novamente.
Acontece que ele está sendo guardado na variável "aposta" já que ele não está entrando no if debaixo, ele entra direto no ELSE.
Tentem vocês mesmo, digitem primeiro números sem repetir, depois números maiores que 60 e na 3 tentativa números iguais, e vejam a diferença:
Script inteiro:
<html> <script> sugestao = new Array(); numeros = new Array(); intInicio = 1; intFim = 60; j =0; res = ""; ordenal = new Array("primeiro", "segundo", "terceiro", "quarto", "quinto", "sexto"); aposta = ""; for(i=0; i<6; i++){ numeros[i] = prompt("Digite o " + ordenal[i] + " número"); for(j=0; j<6; j++){ if(numeros[i] == numeros[j] && i!=j){alert("Você já digitou esse número"); j=6; i--;} } if(numeros[i] > 60 || numeros[i] == ""){ alert("Digite um número entre 1 e 60"); i--; } else {aposta += " " + numeros[i];} } alert(aposta); for(i=0; i<6; i++){ sugestao[i] = intFim - Math.floor((intFim - intInicio+1) * Math.random()); for (j=0; j < sugestao.length; j++){ if(sugestao[i] == sugestao[j] && i!=j){ sugestao[i] = intFim - Math.floor((intFim - intInicio+1) * Math.random()); i=0; } } } for(i=0; i < 6; i++){ for(j=i+1; j<6; j++) { if (sugestao[i] > sugestao[j]) { aux = sugestao[j]; sugestao[j] = sugestao[i]; sugestao[i] = aux; } } res= res + " " + sugestao[i]; } alert("Números sorteados: " +'\n' +res); contador = 0; for(i=0; i<6; i++){ for(j=0;j<6;j++){ if(numeros[i] == sugestao[j]){ contador = contador + 1; } } } alert("Você acertou "+contador); if(contador == 6){alert("PARABÉNS MILIONÁRIO")} for(i=0; i<6;i++){ document.write(numeros[i]+"<br>"); } document.write("<br>") for(i=0; i<6;i++){ document.write(sugestao[i]+"<br>"); } </script> </html>
Valeu gente, ajuda aí por favor, ficou grande mas é simples.