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

Estou com dúvida no curso de Lógica de Programação, no exercício do capítulo Desafio final.

No meu código só estou conseguindo achar o número apostado com o sorteado caso ele esteja na mesma posição do array. Por ex: se os números sorteados foram:

2, 45, 23, 18, 49, 10

E os números apostados foram:

3, 19, 22, 49, 33, 55

Meu código não consegue detectar o acerto com número 49, pois eu não digitei na mesma seqüência do array. Se eu tivesse digitado na mesma seqüência:

2, 45, 23, 18, 49, 10 3, 19, 22, 33, 49, 55

O programa detecta um acerto.

Segue o código abaixo:

4 respostas
solução!

Roger,

Você está usando o contador i para correr a posição das duas arrays logo você está comparando sempre a mesma posição de cada array.

if (numerosApostados[i] == numerosSorteados[i])

Percebeu?

É preciso que, dentro dor for para os números numerosApostados você crie um outro for com variável diferente para o numerosSorteados.

Assim enquanto você estiver na posição 0 do numerosApostados ele fará comparação percorrendo toda a array numerosSorteados.

Não vou colocar o código aqui para você desenvolver o seu raciocínio, mas deixo um dica: não use i para o outro for use j.

Abraços!

Obrigado Filipe! Entendi! abraço!

Roger, executei o teu código e, se considerarmos só o "caminho feliz" (o usuário vai digitar somente números inteiros de 1 a 60 e não repetidos), mesmo assim falta um ajuste em

for (var i = 0; i < 6; i++) {
    var sorteado = Math.round(Math.random() * (60 - 0)) + 0;
    numerosSorteados.push(sorteado);
    console.log(numerosSorteados);
}

porque numerosSorteados[ ] aceita números repetidos gerados pelo Math.random e o zero também. O numerosSorteados[ ] é um array de inteiros e numerosApostados[ ] é um array de strings,

for (var i = 0; i < numerosSorteados.length; i++) {
    if (numerosApostados[i] == numerosSorteados[i]) {
        mostra("você acertou o(s) numero(s): " + numerosApostados[i]);
    }
    //mostra(numerosSorteados[i]);
    console.log(numerosApostados);
}

a mensagem só aparece para o usuário quando as posições dos arrays coincidem com o mesmo valor, caso contrário nada aparece. Como disse o Filipe, a varredura tem que ser com for para numerosSorteados[ ] dentro do for para numerosApostados[ ], por exemplo, com contadores diferentes.

O meu código ficou assim, depois de bater cabeça, caso queiras dar uma olhada: http://pastebin.com/Ehnwv5Rb [ ]s. Boa sorte!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software