7
respuestas

¿Por qué, en mi código, no funcionan los 3 intentos máximos cuando el inicio de sesión es invalido?

Se que me falta alta, pero no puedo sacar que es. Pienso que es en else que se encuentra dentro del while, pero lo comparto para ver si alguien puede ayudarme.

<meta charset="UTF-8">
<script>

    var inicioDeSesionRegistrado = "alura";
    var contrasenhaRegistrada = "alura321";
    var intento = 3;
    var = contador = 1;

    while(contador <= intento) {

        var inicioDeSesionIngresado = prompt("Ingrese su usuario");
        var contrasenhaIngresada = prompt("Ingrese su contraseña");

        if (inicioDeSesionRegistrado == inicioDeSesionIngresado && contrasenhaRegistrada == contrasenhaIngresada) {

            alert("Bienvenido al sistema " + inicioDeSesionIngresado);
            break;
        }

        else {

            alert("inicio de sesión inválido. Por favor intente de nuevo");

        }

        contador++

    }





</script>

Muchas gracias!

7 respuestas

Pablo Martin,

Pienso que debes reemplazar el

else { alert("inicio de sesión inválido. Por favor intente de nuevo"); }

por la siguiente condicion:

    if (contador == intento){
        alert("Usuario o contraseña invalida, ha excedido la cantidad de intentos.");
    }

Asi lograras que solo salga el mensaje cuando alcance la cantidad de intentos permitidos y saldra de while, ya que la condicion sera evaluada como falsa (false).

Muchas gracias Edward. En el mientras tanto pude resolverlo de otro modo y funcionó! Pero voy a probar tu código ya que termina ahorrando varias lineas, de todos modos, te comparto el código que me terminó dando resultados. Nuevamente, muchísimas gracias. Saludos. Pablo.-

<meta charset="UTF-8">
<script>

    var inicioDeSesionRegistrado = "alura";
    var contrasenhaRegistrada = "alura321";
    var intento = 3;
    var contador = 1;

    while(contador <= intento) {

        var inicioDeSesionIngresado = prompt("Ingrese su usuario");
        var contrasenhaIngresada = prompt("Ingrese su contraseña");

        if (inicioDeSesionRegistrado == inicioDeSesionIngresado && contrasenhaRegistrada == contrasenhaIngresada) {

            alert("Bienvenido al sistema " + inicioDeSesionIngresado);
            break;
        }

        else {
                if (contador == 3) {
                alert("Agotaste el número permitido de intentos!");
                }

                else {
                alert("inicio de sesión inválido. Por favor intente de nuevo");
                }

        }

        contador++

    }

</script>

muchas gracias, su informacion me ayudo

<meta charset="UTF-8">
<script>

    var inicioDeSesionRegistrado = "alura";
    var contrasenhaRegistrada = "alura321";
    var contador =  1;
    var intento =3;

while (contador <= intento){


    var inicioDeSesionIngresado = prompt("Ingrese su usuario");
    var contrasenhaIngresada = prompt("Ingrese su contraseña");

    if( inicioDeSesionRegistrado == inicioDeSesionIngresado && contrasenhaRegistrada == contrasenhaIngresada ) {
        alert("Bienvenido al sistema " + inicioDeSesionIngresado);
        break;

    } if (contador == intento){
        alert("inicio de sesión inválido. Favor intente de nuevo");
    }
    }



</script>

Saludos,

En el código de Pablo estuvo bien anidar otro if dentro del else para incluir 2 condiciones:

Si if es vedadero:

if (contador == 3) {
                alert("Agotaste el número permitido de intentos!");
                }

Si if es falso entrar al else y mostrar el mensaje intentar de nuevo y repetir el ingreso de datos de nuevo:

else {
                alert("inicio de sesión inválido. Por favor intente de nuevo");
                }

Pero en el caso de Jesús se crea un loop infinito porque le falta el incrementador contador++, entonces el valor de contador siempre es 1, te adjunto 2 posibles soluciones:

Anidar dentro de un else como hizo Pablo incluyendo el contador++

var intento = 3;
    var contador = 1;

    while(contador <= intento) {

        var inicioDeSesionIngresado = prompt("Ingrese su usuario");
        var contrasenhaIngresada = prompt("Ingrese su contraseña");

        if (inicioDeSesionRegistrado == inicioDeSesionIngresado && contrasenhaRegistrada == contrasenhaIngresada) {

            alert("Bienvenido al sistema " + inicioDeSesionIngresado);
            break;
        }

        else {
                if (contador == 3) {
                alert("Agotaste el número permitido de intentos!");
                }

                else {
                alert("inicio de sesión inválido. Por favor intente de nuevo");
                }

        }

        contador++

    }

</script>

O como yo que cree un if (contador == 4) por fuera del While para avisar con un alert("Ha alcanzado el máximo de intentos"); y siempre debe haber un contador++ antes de cerrar el While para contar las repeticiones:

    var intentos = 3;
    var contador = 1;

    var inicioDeSesionRegistrado = "alura";
    var contrasenhaRegistrada = "alura321";

    while(contador <= intentos) {

        var inicioDeSesionIngresado = prompt("Ingrese su usuario");
        var contrasenhaIngresada = prompt("Ingrese su contraseña");

        if( inicioDeSesionRegistrado == inicioDeSesionIngresado && contrasenhaRegistrada == contrasenhaIngresada ) {
            alert("Bienvenido al sistema " + inicioDeSesionIngresado);
            break;
        } 

        else {

            alert("inicio de sesión inválido. Favor intente de nuevo");

        }

        contador++;

    }

    if (contador == 4) {

        alert("Ha alcanzado el máximo de intentos");

    }

    imprimir("Fin");

</script>

Muy bien, felicitaciones. segui asi!

Duverney probe tu codigo pero sigue siendo infinito