Olá, Ana, tudo bem?
Nos desculpe a demora a responder.
Que bacana que você fez um projeto pessoal! Ficamos felizes, essa é uma excelente forma de praticar e fixar nossos conhecimentos.
O erro está nesse código dentro da função sorteiaNumero
:
for(var numeros = 1; numeros <= quantidade; numeros++){
var numeroAleatorio = sorteia();
var achou = false;
if(numeroAleatorio !== 0){
for(var posição = 0; posição < numerosPensados.length; posição++){
if(numerosPensados[posição] == numeroAleatorio){
achou = true;
break;
}
}
if (achou == false){
numerosPensados.push(numeroAleatorio);
}
}
O problema basicamente é que no for
mais "externo", você está usando a instrução numeros++
. Isso é um problema porque mesmo quando o novo número não é adicionado, essa instrução é executada.
Ou seja, todo esse código do for
é executado exatamente 3 vezes, e nem sempre o número é adicionado em cada uma dessas vezes, então podem acabar sendo adicionados apenas 1 ou 2.
Para corrigir, podemos trocar o for
por um while
. Assim, moveremos a instrução var numeros = 1
para antes do while
e a instrução numeros++
apenas quando o número realmente for adicionado na lista, ou seja, dentro do bloco if (achou == false)
. O código completo da função sorteiaNumero
ficará assim:
function sorteiaNumero(quantidade){
var numerosPensados = [];
var numeros = 1;
while(numeros <= quantidade){
var numeroAleatorio = sorteia();
var achou = false;
if(numeroAleatorio !== 0){
for(var posição = 0; posição < numerosPensados.length; posição++){
if(numerosPensados[posição] == numeroAleatorio){
achou = true;
break;
}
}
if (achou == false){
numerosPensados.push(numeroAleatorio);
numeros++;
}
}
}
return numerosPensados
};
Espero ter ajudado! Abraços e bons estudos :)