Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Solucionado (ver solución)
Solucionado
(ver solución)
5
respuestas

Ayuda

Buenas noches compañeros, queria solicitar una ayuda. este es el codigo que eh escrito para el inicio de sesion, cuando lo lanzo la 2 primeras opciones funcionan bien, pero antes de iniciar el 3 intento me lanza el mensaje "Olvido sus credenciales, agoto sus intentos, por favor comunicarse con soporte." ¿Donde esta mi error?, ¿Que debo cambiar para que funcione? Gracias por tomarse su tiempo para darme su apreciacion.

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

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

    function imprimir(frase){
        document.write(frase);
        saltarLinea();
    }

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

    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 == intentos){
                alert("Olvido sus credenciales,agoto sus " + intentos + " intentos, por favor comunicarse con soporte.");
            }


    }
</script>
5 respuestas

Hola, la variable contador++; debe ir despues del ultimo if, entonces el codigo quedaria de la siguiente forma:

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

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

    function imprimir(frase){
        document.write(frase);
        saltarLinea();
    }

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

    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");
        }


            if (contador == intentos){
                alert("Olvido sus credenciales,agoto sus " + intentos + " intentos, por favor comunicarse con soporte.");
            }

            contador++;
    }
</script>

Elimina el BREAK dentro de tu código, recuerda que el break rompe la cadena, en este caso si se cumple la condición rompes la cadena (hasta el alert de bienvenido al sistema) y como el mensaje "olvido sus credenciales" no pertenece al while se muestra aún pese a estar correcto. Espero se haya entendido.

Esta en que le das un valor a contador de 1, es decir que si te equivocas 1 vez, con el ++ que tienes ahí, contador valdría 2, y al momento que lo intentes 2 veces contador valdría 3, entonces como tu ultima condición dice que si contador = intentos que olvidaste las credenciales etc.., y contador ya vale 3 en la segunda vez que intentas ingresar, por eso no te deja intentarlo una tercera vez, entonces pon como contador con valor inicial de 0, o igual cambia los intentos a 4, que seria lo mismo en este caso

Saludos

solución!

Buenas noches, 2 cosas:

1 - (problema principal) La suma al contador(contador++) debe estar fuera de los condicionales, en otras palabras estaba en el lugar incorrecto. 2- (Estetica) En el ultimo alert no es necesario " + intentos + " ya que intentos es una varible fija, y puedes poner solamente el numero directamente.

te adjunto el codigo ya corregido:

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

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

    function imprimir(frase){
        document.write(frase);
        saltarLinea();
    }


    var intentos = 3;
    var contador = 1;

    while(contador <= intentos){
        var inicioDeSesionRegistrado = "alura";
        var contrasenhaRegistrada = "alura321";
        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");
        }

        if (contador == intentos){

            alert("Olvido sus credenciales,agoto sus intentos, por favor comunicarse con soporte.");
        }

        contador++;


    }
</script>

Buen dia compañeros. Muchas gracias por tomarse el tiempo de revisar y ayudarme con esta solución; leí sus comentarios y aprendi al respecto de ellos. Duvan y Santiago el código quedo solucionado con sus respectivas indicaciones, tendré en cuenta la estética, para que el codigo sea lo mas claro. Sergio gracias por la explicación, entendí lo que sucede con el contador y lo aplicare en mis futuros codigos. Kevin el break considero que esta bien ya que el inicio de sesión cuando las credenciales esta bien termina con el alert de inicio de sesion y no muestra ningún mensaje de haber terminado los intentos.

Gracias excelente día para todos.