1
resposta

[Projeto] Resolução

Segue abaixo solução de proteções.


function sortear() {
    let quantidade = parseInt(document.getElementById('quantidade').value);
    let de = parseInt(document.getElementById('de').value);
    let ate = parseInt(document.getElementById('ate').value);
    
    let sorteados = [];
    let numero;
    
    let invervalo = (ate - de) - quantidade; 
    
    // De precisa ser menor que até
    if ((de < ate) && (invervalo >= 0)) {
        for (let i = 0; i < quantidade; i++) {
            numero = obterNumeroAleatorio(de,ate);

            while (sorteados.includes(numero)){
                numero = obterNumeroAleatorio(de,ate);            
            }

            sorteados.spush(numero);
        }
    } else {
        alert('Intervalos incorretos!');
        document.getElementById('quantidade').value = '';
        document.getElementById('de').value = '';
        document.getElementById('ate').value = '';
    }
    
    let resultado = document.getElementById('resultado');
    resultado.innerHTML = `<label class="texto__paragrafo">Números sorteados: ${sorteados}`;
    alterarStatusBotao();
}


function obterNumeroAleatorio(min,max) {
   return Math.floor(Math.random() * (max - min + 1)) + min;
}


function alterarStatusBotao() {
    let botao = document.getElementById('btn-reiniciar');
    if (botao.classList.contains('container__botao-desabilitado')){
        botao.classList.remove('container__botao-desabilitado');
        botao.classList.add('container__botao');
    } else{
        botao.classList.remove('container__botao');
        botao.classList.add('container__botao-desabilitado');
    }
}

function reiniciar() {
    document.getElementById('quantidade').value = '';
    document.getElementById('de').value = '';
    document.getElementById('ate').value = '';
    document.getElementById('resultado').innerHTML = '<label class="texto__paragrafo">Números sorteados:  nenhum até agora</label>';
    alterarStatusBotao();    
}
1 resposta

Olá Cristin! Tudo bem?

Vendo o seu código, digo que você já está no caminho certo ao implementar uma verificação para garantir que o valor "De" seja menor que "Até". No entanto, percebi que há um pequeno erro de digitação no seu código que pode estar causando problemas:

sorteados.spush(numero);

O método correto é push, e não spush. Então, a linha correta seria:

sorteados.push(numero);

Além disso, a lógica para verificar se "De" é menor que "Até" já está no seu código, mas talvez seja interessante melhorar a mensagem de alerta para o usuário, para que fique mais claro o que está errado. Por exemplo:

alert('O valor "De" deve ser menor que o valor "Até". Por favor, reveja os intervalos.');

Com essas pequenas correções, acredito que seu código ficará mais robusto e fácil de entender para quem estiver utilizando a aplicação.

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.