1
resposta

problema na hora de sortear

estou com um problema, segue o código abaixo:

 
    if (de >= ate) {
        alert('verifique se os números estão corretos,"Do número" deve ser inferior ao campo "Até o número');
        reiniciar();
        return;
    }

    if (quantidade > (de - ate +1)) {
        alert('"Quantidade" deve ser inferior à diferença entre os campo "Até o número" e "Do número"');
        reiniciar();
        return;
    }

o problema é quando eu coloco tudo certo, por exemplo: quantidade= 1; de= 1; ate= 10; após colocar esses valores e clicar em sortear, aparece o alert exibindo : ('"Quantidade" deve ser inferior à diferença entre os campo "Até o número" e "Do número"'); em vez de sortear o número, quando eu fiz o teste das condicionais executaram tudo certo exibindo o alert tanto if (de >= ate) quanto if (quantidade > (de - ate +1)), talvez eu errei alguma coisa, provavelmente por que eu estou com muita fome agora, enfim me ajudem nessa parte.

1 resposta

Olá, Filipe! Como vai?

Parece que você está com um pequeno problema na lógica do seu código. Vamos tentar resolver isso juntos.

O problema está na segunda condição do seu código. Você está verificando se a quantidade é maior que a diferença entre os números 'de' e 'até' somado a 1. No seu exemplo, a quantidade é 1, 'de' é 1 e 'até' é 10. A diferença entre 'de' e 'até' é -9 (1 - 10), e somando 1 resulta em -8. Como 1 (quantidade) é maior que -8, a condição é verdadeira e o alerta é exibido.

Acredito que a lógica que você quer aplicar é verificar se a quantidade é maior que a quantidade de números possíveis no intervalo entre 'de' e 'até'. Para isso, você deve subtrair 'de' de 'até' e somar 1 (para incluir os limites 'de' e 'até'). No entanto, a ordem dos operandos na subtração deve ser invertida. Então, a condição correta seria:

if (quantidade > (ate - de + 1)) {
    alert('"Quantidade" deve ser inferior à diferença entre os campo "Até o número" e "Do número"');
    reiniciar();
    return;
}

Nesse caso, se 'de' for 1 e 'até' for 10, a diferença será 9 (10 - 1), somando 1 resultará em 10. Como a quantidade é 1, que é menor que 10, a condição será falsa e o alerta não será exibido.

Espero ter ajudado e bons estudos!

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