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

A mensagem do "else" aparece 3 vezes no final

Não consegui executar a solução do exercício sozinha :0( ...tentei de várias formas e não deu certo . Ao ver a solução do professor entendi a lógica usada e refiz no meu código. A questão é que ao errar 3 vezes o login e senha aparece a mensagem do else 3 vezes na tela. "Senha e/ou login invalidoSenha e/ou login invalidoSenha e/ou login invalido" Como mudar isso para apresentar apenas uma vez o " Senha e/ou login invalido. Se utilizar o break ele não percorre o while novamente.

  <script>
        function mostra (frase){
            document.write(frase);
        }

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

        var login = "andreia";
        var senha = "eu123";

        var tentativaMaxima = 3;
        var tentativaInicial = 1;

         while(tentativaInicial <= tentativaMaxima){
              var loginInformado = prompt("Insira seu login");
              var senhaInformada = prompt("Insira sua senha");

                     if (login == loginInformado && senha == senhaInformada){
                            mostra("Seja bem vindo " + loginInformado);
                            tentativaInicial=tentativaMaxima;
                   } else {
                       mostra("Senha e/ou login invalido");
                   }
                   tentativaInicial = tentativaInicial +1;
         }

    </script>
7 respostas

Oi Andreia, me mostra como você tava fazendo pra gente entender melhor?

Editei e coloquei o código no primeiro post. Obrigado!

Oi Andreia, então, sua solução está ótima, o único ajuste é trocar a linha

tentativaInicial=tentativaMaxima;

pela instrução break. Entende?

Outro ponto é, como no seu while você está fazendo <= (menor igual) isso quer dizer que mesmo que eu acerte a senha de primeira, ele vai me perguntar novamente. Isso por que você está atribuindo o valor de tentativas máxima para o tentativas inicial. O valor sempre será 3 e como 3 <= 3 dá verdadeiro, estaremos sempre inserindo o login eternamente. :)

Minha sugestão é que você inicie o tentativas inicial com zero e retire o = (igual) do while, assim vai ficar certinho.

Testa pra mim e diz se faz sentido?

Bom dia! Sim entendi :0) e ajustei...deu certo.

Mas quando eu erro de propósito o login e senha 3 vezes seguidos é apresentado na tela três vezes a mensagem que consta no "else"....Senha e login invalidoSenha e login invalidoSenha e login invalido. Pois como tem o loop cada vez que eu erro ele apresenta a mensagem. O correto seria após as três tentativas erradas apresentar na tela apenas uma vez a mensagem de Senha e login inválidos. Se eu usar o break após o else o loop não é feito.

Entendi, então troca o else por outro if mais menos assim:

 if (!(login == loginInformado && senha -= senhaInformada) && tentativaMaxima == tentativaInicial){
    mostra("Senha e/ou login invalido");
}

Dessa forma você valida que o login foi incorreto e ainda que o número de tentativas esgotou e exibe a mensagem uma vez só. Faz sentido? Testa pra mim?

solução!

Bom dia! Fiz da forma que falou, mas no final ele não apresenta a mensagem do mostra. Mas com a sua ideia do if eu fiquei tentando algumas opções e consegui uma que deu certo :0) Segue abaixo

  var login = "andreia";
  var senha = "eu123";

  var tentativaMaxima = 3;
  var tentativaInicial = 0;

         while(tentativaInicial < tentativaMaxima){
              var loginInformado = prompt("Insira seu login");
              var senhaInformada = prompt("Insira sua senha");

                     if (login == loginInformado && senha == senhaInformada){
                            mostra("Seja bem vindo " + loginInformado);
                            break;
                            } else {
                                tentativaInicial = tentativaInicial +1;
                            }
            }                              }

        if (login != loginInformado && senha != senhaInformada && tentativaMaxima == tentativaMaxima){
                        mostra("Senha e/ou login invalido");
                       }

Opa Legal Andreia, parabéns! :)

Bons estudos, precisando estamos por aqui!