2
respostas

[Projeto] Consolidando seu conhecimento 1 - Problemas com o ELSE

A ultima versão do código é essa:

<meta charset="UTF-8">

<script>

    function pulaLinha() {
        document.write("<br><br>");
    }

    function mostra(frase) {
        document.write(frase);
        pulaLinha();
    }

    function sorteio(num) {
        return Math.round(Math.random() * num);
    }

    alert("Vamos ver se você está com sorte hoje!");

    var nome = prompt("Por gentileza, Informe seu nome.");
    var numeroPensado = sorteio(10);
    var chute = parseInt(prompt(nome + ", pensei em um número de 0 a 10. Digite qual é esse número e veremos se você acerta."));

    if (chute == numeroPensado) {
        mostra("Mandou bem, " + nome + "! O número pensado foi " + chute + ".");
    }
    if (chute > numeroPensado) {
        mostra("Não foi desta vez, " + nome + "! O número que estou pensado é maior que " + chute + ". O numero pensado é " + numeroPensado + ".");
    }
    if (chute < numeroPensado) {
         mostra("Não foi desta vez, " + nome + "! O número que estou pensado é menor que " + chute + ". O numero pensado é " + numeroPensado + ".");
    }

    mostra("Pressione a tecla 'F5' para tentar novamente.")

</script>

Antes estava assim:

    if (chute == numeroPensado) {
        mostra("Mandou bem, " + nome + "! O número pensado foi " + chute + ".");
    }else {
           if (chute > numeroPensado) {
               mostra("Não foi desta vez, " + nome + "! O número que estou pensado é maior que " + chute + ". O numero pensado é " + numeroPensado + ".");
               } else {
               mostra("Não foi desta vez, " + nome + "! O número que estou pensado é menor que " + chute + ". O numero pensado é " + numeroPensado + ".");
            }}

E ambas as versões apresentam o mesmo problema, elas se perdem com a resposta ao usuário, que está assim em alguns casos:

"*Não foi desta vez, Jeferson! O número que estou pensado é menor que 3. O numero pensado é 7.

Pressione a tecla 'F5' para tentar novamente.*"

Infelizmente, não estou conseguindo ver onde está o erro no código. Conseguem me ajudar com isso.

Fico no aguardo. Desde já, grato.

2 respostas

oi Jeferson!!! Ficou muito legal esse código!! Quando pensei nesta solução, foi certeiro, mas ainda sim, sem uma explicação muito boa. Mas deve ser o clássico "computador é burro", porque ele deve receber primeiro o número pensado e depois na condição vc colocou o chute primeiro, então ele deve fazer a comparação no sentido inverso . Porque ao colocarmos a condição chute > numeroPensado, o computador já tem o número pensado!!!! então fica assim:

chute > 5 ; porque 5 já está pensado e o chute vem depois. então vc chuta 7;

ai fica: 7 > 5 ;

Então o computador responde: Não foi desta vez, Romeu! O número que eu pensei, é maior que 7. Esse número é: 5 ?????????????????????????????????????????????????????????????????????????????????????????? Com a inversão, sendo numeroPensado > chute, a resposta fica certa!!! Mas sem dúvida está na lógica , nos padrões do programa, que geram primeiro o número pensado e temos que seguir esta ordem...

Também peço desculpas pelas mudanças, que fiz no código, pq enquanto cérebro pensa, as mãos não param, e acabei por mudar várias coisas.

A condição que vc criou para maior ou menor, não coincide com a resposta mostra(), por isso dá erro. E pra eu ter certeza disso, eu fiz inversão nos dois casos. afeeeee!! Testei várias vezes e todas deram certo, tanto com uma versão, quanto com outra. Tens que olhar, observar e entender isso, loucura!!! kkk

Boa sorte e bons estudos!!!

A seguir deixo a versão para cada condição:

condição chute > ou < numeroPensado

    if ( chute===numeroPensado ) {
        pulaLinha();
        mostra("Mandou bem, " + nome + "!<br><br> O número pensado foi " + chute );
    }
    if ( chute>numeroPensado ) {
        pulaLinha();
        mostra("Não foi desta vez, " + nome + "!<br><br> O número que eu pensei, é maior que " + numeroPensado + ".<br><br> Esse número é: " + chute   );
    }
    if (chute < numeroPensado ) {
        pulaLinha();
         mostra("Não foi desta vez, " + nome + "!<br><br> O número que eu pensei, é menor que " + numeroPensado + ".<br><br> Esse número é: " + chute  );
    }

    mostra("Pressione a tecla 'F5' para tentar novamente.")

condição numeroPensado > ou < chute

    if ( numeroPensado === chute ) {
        pulaLinha();
        mostra("Mandou bem, " + nome + "!<br><br> O número pensado foi " + chute );
    }
    if ( numeroPensado > chute ) {
        pulaLinha();
        mostra("Não foi desta vez, " + nome + "!<br><br> O número que eu pensei, é maior que " + chute  + ".<br><br> Esse número é: " + numeroPensado);
    }
    if (numeroPensado < chute ) {
        pulaLinha();
         mostra("Não foi desta vez, " + nome + "!<br><br> O número que eu pensei, é menor que " + chute+ ".<br><br> Esse número é: " + numeroPensado);
    }

    mostra("Pressione a tecla 'F5' para tentar novamente.")

Romeu, boa tarde.

Espero que esteja bem!

Muito obrigado pela ajuda.

Dei uma "anabolizada" no programa incrementando as coisas que aprendi ao longo do curso até aqui e acho q ficou bem legal. Se puder e quiser, dá uma olhada e dia o que você achou:

<meta charset="UTF-8">

<script>

    function pulaLinha() {
        document.write("<br><br>");
    }

    function mostra(frase) {
        document.write(frase);
        pulaLinha();
    }

    function sorteio(num) {
        return Math.round(Math.random() * num);
    }

    var nome = prompt("Primeiramente, informe seu nome.");
    alert(nome + ", vamos ver se você está com sorte hoje!");   
    alert("Pensei em um número de 0 a 10 e você tem 3 chutes para acertar esse número.");
    var numeroPensado = sorteio(10);
    var tentativas = 1;

    while (tentativas <= 3 ){
        if (tentativas < 3){
            var chute = parseInt(prompt("Dê seu " + tentativas + "º chute!"));
        } else {
            var chute = parseInt(prompt("ATENÇÃO! Esse é seu último chute!!!"));
        }

        if (chute == numeroPensado) {
            mostra("Mandou bem, " + nome + "! O número pensado foi " + chute + ".");
            break;
        } else if (numeroPensado > chute) {
            if (tentativas < 3){
                    alert(nome + ", o número pensado é maior que " + chute + ".");
                } else {
                    alert(nome + ", suas tentativas acabaram!");
                }
            mostra("O número pensado era maior que " + chute + ".");
        } else {
                if (tentativas < 3){
                    alert(nome + ", o numero pensado é menor que " + chute + ".");
                } else {
                    alert(nome + ", suas tentativas acabaram!");
                }
            mostra("O número pensado era menor que " + chute + ".");
        }
        tentativas = tentativas + 1;
    }
    if (tentativas = 3 && numeroPensado != chute){
        mostra(nome + ", infelizmente você não acertou nenhum chute! O número pensado era " + numeroPensado + ".");
    } 
    mostra("Pressione a tecla 'F5' para tentar novamente.")

</script>

Novamente, muito obrigado!