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

[Dúvida] MELHORAR MEU CODIGO

Para solucionar o problema da quantidade de numeros sorteados ser maior que o intervalo de numeros, eu pensei numa array que vai inserir numero a numero do intervalo, depois o comprimento das arrays vao ser comparados. Se for maior, vai exibir o alert. Nao é eficiente mas eu também nao sei o que ta dando de errado no meu for.

Quanto a resolução sugerida pelo instrutor, eu nao entendi a questao do "+1" e da necessidade de colocar o return. Alguem pode me explicar? if (quantidade > (ate - de + 1)) { alert('XXXXX'); return; }

3 respostas

Oii Gabriela, tudo bem?

Vamos lá, você está correta ao pensar em comparar o tamanho do intervalo com a quantidade de números a serem sorteados. Isso é uma ótima maneira de evitar o problema do loop infinito.

Quanto à solução sugerida pelo instrutor, o "+1" é necessário porque estamos lidando com um intervalo inclusivo. Por exemplo, se o intervalo for de 10 a 13, temos 4 números possíveis (10, 11, 12, 13), e não 3. Então, subtraímos o menor número do maior e adicionamos 1 para obter a quantidade correta de números no intervalo.

O return é usado para interromper a execução do código caso a condição do if seja verdadeira. Isso significa que, se a quantidade de números a serem sorteados for maior que o intervalo, o código irá parar de executar e o alerta será exibido.

Um abraço e bons estudos.

A escrita do codigo está correta entao?

let intervaloDeNumerosEscolhidos = []; 
for (cont = de; cont =< ate; cont++){ 
intervaloDeNumerosEscolhidos.push(cont); 
     if(intervaloDeNumerosEscolhidos.length < numerosSorteados.length ){ 
    alert('A quantidade de numeros a serem sorteados deve estar no intervalo correto'); 

     }
    }
solução!

Você pode melhorar estrutura do seu for loop. Pra fazer isso e fazer seu código enquadrar no pedido na aula podemos fazer algumas modificações.

let intervaloDeNumerosEscolhidos = [];
for (let cont = de; cont <= ate; cont++) {
    intervaloDeNumerosEscolhidos.push(cont);
}

if (quantidade > intervaloDeNumerosEscolhidos.length) {
    alert('A quantidade de números a serem sorteados deve estar no intervalo correto');
}

Principais melhorias:

  1. Corrigimos a condição do loop for para cont <= ate pra garantir que ele itere corretamente sobre todos os números no intervalo.
  2. Removemos a verificação desnecessária dentro do loop for, pois só precisamos garantir que a quantidade de números a serem sorteados esteja no intervalo correto após a construção do array intervaloDeNumerosEscolhidos.
  3. Comparando a quantidade desejada de números a serem sorteados com o comprimento do array intervaloDeNumerosEscolhidos, podemos determinar se está dentro do intervalo correto. Se não estiver, exibimos um alerta.

Com essas modificações, o código estará mais claro e realizará a verificação desejada conforme sugerido na atividade.

Abraços!