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

Programa dinâmico

Fiz o programa abaixo está ok, mas está limitado a um número aleatório entre 0 a 10. Se eu entrar com o número 11, o programa trava. Como faço para adaptar para que a entrada do usuário gere os números aleatórios, sem travar?

<meta charset="UTF-8">

<script>

    var quantidadeNumeros = geraNumeroNaoRepetido(parseInt(prompt("Informe uma quantidade de números entre 1 e 10 que o sistema deve gerar de forma aleatória.\n\nA lista será composta por:\n\n-números não repetidos; e\n-zero não é um número válido.")));

    function geraNumeroAleatorio() {

        return Math.round(Math.random() * 10);

    }

    function geraNumeroNaoRepetido(quantidadeNumeros) {

        var listaNumeros = [];

        var numero = 1;

        while(numero <= quantidadeNumeros) {

            var numeroGerado = geraNumeroAleatorio();  

            if(numeroGerado != 0) {

                var numeroRepetido = false;

                while(numeroRepetido == false) {

                    for(var posicao = 0; posicao < listaNumeros.length; posicao++) {

                        if(numeroGerado == listaNumeros[posicao]) {

                            numeroRepetido = true; 
                            break;

                        }

                    }

                    if(numeroRepetido == false) {

                        listaNumeros.push(numeroGerado);        
                        numero++;

                    }

                }

            }


        }

        console.log(listaNumeros);
        return listaNumeros;

    }

</script>
4 respostas

Boa noite, Ramon! Como vai?

O ideal nesse caso é, após o chute do usuário, verificar se o valor do chute está entre os limites dos números aleatórios gerados ( nesse caso, 0 e 10 ). Caso o chute não esteja no intervalo desejado, avise o usuário sobre isso e peça pra ele dar um novo chute!

Pegou a ideia? Qualquer coisa é só falar!

Grande abraço e bons estudos, meu aluno!

boa tarde Gabriel, peguei a ideia sim... mas na verdade queria que o meu programa fosse capaz de gerar tantos números aleatórios quanto o usuário informasse na entrada do prompt. daí inspecionaria no console se a função está gerando corretamente, sem repetição de número e tal.

queria resolver o problema de travar o programa a partir de de uma lógica de programação dinâmica, que não limitasse a entrada do usuário, mas infelizmente não consegui pensar na solução.

alguém poderia me ajudar?

solução!

Se vc quer que o usuário defina o limite de números aleatórios gerados, então vc terá que usar o prompt() para obter essa informação!

Faça um prompt() perguntando o limite para os números gerados ( por exemplo, se o usuário disser 1000, então serão números aleatórios entre 0 e 1000 ) e passe esse valor informado para a função geraNumeroAleatorio().

Depois faça um segundo prompt() pedindo o chute do usuário. E siga em frente com a lógica que vc já conhece!

Contudo, mesmo nesse caso, veja que o usuário ainda poderá chutar um valor acima do limite estabelecido por ele mesmo! Então, ainda assim, vc terá que fazer a verificação que disse anteriormente para o programa não acabar travando ou dando qualquer outro tipo de problema!

Qualquer coisa é só falar!

Grande abraço e bons estudos, meu aluno!

Valeu Gabriel, esclarecido!