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

[Projeto] desafio de quantidade a ser sorteada menor que o intervalo

alterei o codigo, usando o codigo anterior, acabei criando uma solução que bloqueia o que foi pedido, e que impede de termos intervalos negativos de numeros. segue o codigo

let quantidadeDeNumeros;
let limiteInferior;
let limiteSuperior;


function sortear() {
    quantidadeDeNumeros = parseInt(document.getElementById('quantidade').value);
    limiteInferior = parseInt(document.getElementById('de').value);
    limiteSuperior = parseInt(document.getElementById('ate').value);
    let calculo = limiteSuperior - limiteInferior
    if (quantidadeDeNumeros >= calculo) {
        alert('Dados incorretos, favor verificar os valores inseridos');
            return
    } else {
        if (limiteInferior < limiteSuperior) {
        let numero
        let listasNumeros = [];    
            for (let i = 0; i < quantidadeDeNumeros; i++) {
                numero = gerarNumeros(limiteInferior, limiteSuperior);

                while(listasNumeros.includes(numero)) {
                    numero = gerarNumeros(limiteInferior,limiteSuperior);        
                }
                listasNumeros.push(numero);
            }
            console.log(listasNumeros);
            let resultado = document.getElementById('resultado');
            resultado.innerHTML =  `<label class="texto__paragrafo">Números sorteados: ${listasNumeros}  </label>`
            alterarStatusBotao();
        }
    }
}

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

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();
}

2 respostas
solução!

Olá, Rony! Tudo bem?

Pelo que você descreveu, parece que você já está no caminho certo para resolver o problema de evitar que o usuário escolha uma quantidade de números a ser sorteada maior do que o intervalo disponível. O seu código já inclui uma verificação que impede que isso aconteça, o que é ótimo!

No entanto, notei um pequeno detalhe que pode ser melhorado. No cálculo da variável calculo, você está subtraindo limiteInferior de limiteSuperior, mas não está considerando que o intervalo inclui ambos os limites. Portanto, você deve somar 1 ao resultado para garantir que todos os números do intervalo sejam considerados.

Aqui está a correção que você pode fazer:

let calculo = limiteSuperior - limiteInferior + 1;

Com essa alteração, o código deve funcionar corretamente e evitar que o usuário selecione uma quantidade de números maior do que o intervalo disponível.

Bons estudos!

obrigado, vou ajustar no meu codigo.