Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

RafaelLeggiero

Repetir pergunta até que acerte o numero desejado (while, do, dowhile)

Recommended Posts

Boa tarde pessoal

estou elaborando um programa que gera um numero aleatório de 0 a 100, onde o usuário deve chutar um numero

e o programa vai dizer se o número é maior ou menor que o chutado, o programa lê o valor que o usuário digitou

até que ele acerte o numero sorteado.Quando o usuário acertar o sistema imprime quantas tentativas foram necessárias

para descobrir.

 

consegui montar o código todo que pede o numero ao usuário

e verifica se o numero digitado eh igual, se é menor ou se é maior e informa áo usuário

porém preciso encaixar em uma estrutura de repetição para que repita ate que o usuário acerte o numero sorteado,

e preciso que diga quantas tentativas foram usadas. Segue abaixo o código JS

 

 

<script>
function sorteiaNumeros(num){
var num2 = Math.floor((Math.random() * 101) + 0);
var num;
if(num == num2){ // Acertou
alert("Parabéns Você Acertou" + num + " Tentavias.");
}
else if(num < num2){ // Errou número menor
alert("Errou, tente um numero MAIOR.");
}
else{ //Errou número maior
alert("Errou, tente um numero MENOR.");
}
alert("Numero Aleatório: " + num2);
}
var n1; // variáveis que serão utilizadas para colher as informações
n1=parseInt(prompt("Entre com o numero de 0 á 100 para tentar adivinhar")); // n1 recebera um valor inteiro que será digitado no prompt (janela)
sorteiaNumeros(n1);
</script>
___________________________________________________________________________________________________
criticas e sugestões são muito bem vindas, desde já agradeço a ajuda.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na forma que está, ele sempre vai sortear um numero novamente. Coloque a linha que sorteia o número fora da função de verificação.

Dei uma modificada no código e implementei algumas verificações. Veja

var num2 = Math.floor(Math.random() * 101), // numero sorteado
    num, // numero informado
    tentativas=0; // numero de tentativas

function checaNumero() {
    num=prompt("Entre com o numero de 0 á 100 para tentar adivinhar");
    
    // Usuário cancelou o quiz
    if(num == null) return false;
    
    // Usuário não informou um número
    if(parseInt(num).toString()==='NaN') {
        alert('Digite um número válido');
        checaNumero();
        return false;
    }
    
    tentativas++; // Incrementa as tentativas

    if(parseInt(num) == num2){ // Acertou
        alert("Parabéns você acertou em " + tentativas + " tentavias.");
    }
    else if(parseInt(num) < num2){ // Errou número menor
        alert("Errou, tente um numero MAIOR.");
        checaNumero();
    }
    else{ //Errou número maior
        alert("Errou, tente um numero MENOR.");
        checaNumero();
    }   
}

checaNumero()

Se, por algum motivo, você realmente precisa usar um loop, tente assim

var num2 = Math.floor(Math.random() * 101), // numero sorteado
    num, // numero informado
    tentativas=0; // numero de tentativas

do {
    num=prompt("Entre com o numero de 0 á 100 para tentar adivinhar");
    
    // Verifica se o usuário cancelou
    if(num == null) break;
    
    tentativas++; // Incrementa as tentativas

    if(parseInt(num).toString()==='NaN') { // Não é um número
        alert('Digite um número válido');
        tentativas--; // Decrementa a tentativa invalida
    }
    else if(parseInt(num) < num2){ // Errou número menor
        alert("Errou, tente um numero MAIOR.");
    }
    else if(parseInt(num) > num2){ //Errou número maior
        alert("Errou, tente um numero MENOR.");
    }   
} while(parseInt(num) != num2)

if(num != null)
    alert("Parabéns você acertou em " + tentativas + " tentavias.");

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aproveito e publico mais alguns acréscimos para melhorar.

<script language="javascript">
num2=Math.floor(Math.random()*100)+1
var tentativas=6
function checaNumero(){
var num=a.b.value
tentativas--
if(a.c.value!=tentativas){
a.c.value=tentativas
}
if (num==num2){
alert("Parabéns você acertou, é o número "+num2+" ")
alert("Tentar outra vez?")
location.reload()
}
if ((num<num2)&&(tentativas>0)){
alert("Errou, tente um número MAIOR.")
}
if((num>num2)&&(tentativas>0)){
alert("Errou, tente um número MENOR.")
}
if ((tentativas<=0)&&(num!=num2)){
alert("Sinto muito, o era número "+num2)
alert("Tentar outra vez?")
location.reload()
}
a.b.value=""
a.b.focus()
}
</script>
<div align="center">
<font face="Verdana" size="2">Entre com o número de 0 á 100 para tentar adivinhar.</font>
<br /><br />
<center>
<form name="a">
<input name="b" type="text" size="5"><input type="button" value="Boa Sorte" onClick="checaNumero()">
<br>
<font face="Verdana" size="2">
<p>Falta <input type="text" name="c" size="1" value="6"> tentativas.</p></font></form>
</center>

Espero que goste e aprecie.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aproveito e publico mais alguns acréscimos para melhorar.

<script language="javascript">
num2=Math.floor(Math.random()*100)+1
var tentativas=6
function checaNumero(){
var num=a.b.value
tentativas--
if(a.c.value!=tentativas){
a.c.value=tentativas
}
if (num==num2){
alert("Parabéns você acertou, é o número "+num2+" ")
alert("Tentar outra vez?")
location.reload()
}
if ((num<num2)&&(tentativas>0)){
alert("Errou, tente um número MAIOR.")
}
if((num>num2)&&(tentativas>0)){
alert("Errou, tente um número MENOR.")
}
if ((tentativas<=0)&&(num!=num2)){
alert("Sinto muito, o era número "+num2)
alert("Tentar outra vez?")
location.reload()
}
a.b.value=""
a.b.focus()
}
</script>
<div align="center">
<font face="Verdana" size="2">Entre com o número de 0 á 100 para tentar adivinhar.</font>
<br /><br />
<center>
<form name="a">
<input name="b" type="text" size="5"><input type="button" value="Boa Sorte" onClick="checaNumero()">
<br>
<font face="Verdana" size="2">
<p>Falta <input type="text" name="c" size="1" value="6"> tentativas.</p></font></form>
</center>

Espero que goste e aprecie.

 

Heheh, uma proposta bem feita!

Eu iria, na verdade, sugerir que se utilizasse um while para manter o loop rodando sem a necessidade de chamar uma função várias vezes:

<script>
        var input;
        var num = Math.floor(Math.random() * 101);
        var tentativas = 0;
        function msgTentativas() {
            alert('Foram necessárias ' + tentativas + ' tentativas para adivinhar!');
        }
        function acerte() {
            while (input != num) {
                input = prompt('Digite um valor entre 0 e 100:');
                tentativas++;
                var palpite = parseInt(input);

                // Verifica os erros
                if (input == null || input == "") {
                    alert('Nenhum valor foi inserido. A aplicação foi cancelada!');
                    break;
                } else if (isNaN(palpite)) {
                    alert('O valor digitado não é um número. Poderia verificar?');
                } else {
                    if (palpite == num) {
                        alert('Número correto! Parabéns!');
                        msgTentativas();
                    } else { //Dicas
                        if (palpite < num) {
                            alert('Você digitou ' + palpite + ', este é MENOR que o valor correto!');
                        } else {
                            alert('Você digitou "' + palpite + '", este é MAIOR que o valor correto!');
                        }
                    }
                }
            }
        }
        acerte();
    </script>

Me amarro nessas postagens onde cada um mostra o samba que faz (não, não curto tanto samba!)

 

Abraços!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá,

 

Resolvi entrar na brincadeira também - http://jsfiddle.net/angelorubin/zejrwLwe/51/

 

Obs: Precisa de ajustes finos.

 

Espero que ajude.

 

 

Melhorei um pouquinho - http://jsfiddle.net/angelorubin/zejrwLwe/58/

Compartilhar este post


Link para o post
Compartilhar em outros sites
Boa tarde Ângelo,


Após muitas pesquisas encontrei sua resposta no fórum onde quase consegui desenvolver meu projeto. Você respondeu o tópico chamado: "Repetir pergunta até que acerte o número", visualizei o link que você deixou no jsfiddle, tentei trabalhar com ele, mas não consegui personalizar como desejava.


Necessito de um questionário com múltiplas opções, onde o usuário digita o número respectivo e exibe msg de correto ou incorreto, exemplo:


1 - carro ( ) periférico de computador

2 - lua ( ) para crianças

3 - chupeta ( ) não é um planeta

4 - mouse ( ) possui rodas


botao (confirmar)


Se puder ficarei imensamente agradecido!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.