19
respuestas

No me está funcionando el código.

No me funciona mi código, ni siquiera el que el profe publicó como respuesta.

No corre bien en mi computador.

No sé que es lo que pasa. por favor si alguien me puede explicar se los agradecería.

Estoy utilizando Visual Studio Code (me pregunto si eso tiene algo que ver.)

De antemano agradezco sus respuestas.

Posdata: Ya en serio este programa me ha dado muchos problemas. llevo horas pegado en esta clase.

19 respuestas

Podrias pasar el codigo??

Te paso lo que hice, para que puedas guiarte.

<meta charset="UTF-8" />
<script>
  var inicioDeSesionRegistrado = "alura";
  var contrasenhaRegistrada = "alura321";

  var contador = 0;
  var intentos = 3;
  while (true) {
    contador++;
    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("inicio de sesión inválido. Favor intente de nuevo");
      }
      if (contador == 3) {
        alert("Ha superado los 3 intentos!!!");
        break;
      }
    }
  }
</script>

Hasta donde puedo entender, hay varios puntos para corregir:

  • el contador inícialo en 1.
  • Fijate que en el while tenes entre los paréntesis (true). Estas generando un bucle infinito, y aca tenes que armar la condicion: comparas si contador es mayor que el numero de intentos.
  • la linea de incremento del contador (contador++), no iria al prinicipo del while.

Voy a agregar comentarios a tu código explicando las fallas que veo

<script>
  var inicioDeSesionRegistrado = "alura";
  var contrasenhaRegistrada = "alura321";

  var contador = 0;
  var intentos = 3;

  while (true) {     // Aquí iría la condición que hace los tres intentos: while ( contador <= 3 ), si lo dejas así, siempre será verdadero y nunca terminará
    contador++;    // El contador se debe incrementar cuando haya realizado la comparación, o sea, tiene que ir al final, antes de que termine el while
    var inicioDeSesionIngresado = prompt("Ingrese su usuario");  // Hay que declarar las variables antes de entrar al while, ya dentro solo utilizalas
    var contrasenhaIngresada = prompt("Ingrese su contraseña");
    if (
      inicioDeSesionRegistrado == inicioDeSesionIngresado &&
      contrasenhaRegistrada == contrasenhaIngresada
    ) {
      alert("Bienvenido al sistema " + inicioDeSesionIngresado);
      break;
    } else {
      if (contador < 3) {     
        alert("inicio de sesión inválido. Favor intente de nuevo");
      }
      if (contador == 3) {
        alert("Ha superado los 3 intentos!!!");
        break;    // No es necesario este break, ya que han finalizado los intentos y por ende, ya sale del ciclo
      }
    }
  }
</script>

Hola Lorena Valencia Ruiz, el contador me parece que no tiene una ubicación específica para ubicarlo. El break es necesario ya que la condición del while es true; o sea que siempre se va a quedar en en ciclo a menos que haga un break. Creo que no es una condición necesaria hacer los ejercicios tal cual los explican en clase. En todo caso puede haber una mejor forma de resolver el problema pero no una única, y para saberlo habría que medir la performance de cada algoritmo para ver cual es mejor.

El while es true siempre y cuando se cumpla la condicion. por ejemplo: contador <= 3. No es necesario el segundo break ya que al cumplirse la cantidad de intentos se cierra el bucle..

si uno quiere puede dejar fija la condición en true y hacer la comprobación en el if, para no estar haciendolo 2 veces (una en el while y otra en el if). no creo que sea tan difícil de entender. de todas maneras supongo que hay muchas respuestas que llegan al mismo resultado.

Gerardo, entonces pudiste solucionarlo?? ..

Siempre anduvo bien, le dejé el código para Moisés Barillas Flores, ya que a el no le salía o no podía resolverlo. Se lo dejé para que se de una idea de como hacerlo.

aaaah si jejeje.. a mi se explotaba la cabeza.. Disculpame amigo!!!

no hay problema, está bueno que tengan esas de ayudar. la próxima vez seguro me sirve que me respondan tan rápido. jajaja. :)

Gerardo sos un capo. he probado de varias formas y me ha fallado.

En serio no sé como lo hiciste gracias. este código si que anda bien!!!

Reitero, mil gracias

jaja. de nada Moises. solo me salio de casualidad y probando varias veces.

<meta charset="UTF-8">

<h1>Programa de Inicio de Sesión</h1>

<script>
    function saltarlinea() {
        document.write("<br>");
        document.write("<br>");
        document.write("<br>");

    }

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


    var usuarioregistrado = "alura";
    var contraseñaregistrada = "alura123";

    var contador = 1;
    var intentos = 3;


    while (contador <= intentos) {

        var usuarioingreso = prompt("Ingrese su Nombre de Usuario.");
        var contraseñaingreso = prompt("Ingrese su Contraseña.");


        if (usuarioregistrado == usuarioingreso && contraseñaregistrada == contraseñaingreso) {
            alert("Bienvenido al sistema " + usuarioregistrado);
            break;
        } else {
            if (contador == 3) {
                alert("Haz excedido el número de intentos!");
            } else {
                alert("Inicio de sesión inválido, por favor intentelo de nuevo");
            }

        }
        contador++;
    }

    if (usuarioregistrado == usuarioingreso && contraseñaregistrada == contraseñaingreso) {
        imprimir("Bienvenido al Sistema Alura");
    } else {
        imprimir("Haz excedido el número de intentos!");
    }

    imprimir("Fin Del Programa.")
</script>

Para los que me han ayudado, así me quedó el código después de una dura batalla de casi 3 horas en total (lo sé, lo sé es mucho tiempo pero no lo iba a dejar sin resolver). 

Agradezco a todos por su ayuda, abrazos.

Hola Gerardo, una disculpa, si es cierto que hay muchas formas de resolver los problemas y no había entendido tu lógica. Y si estoy de acuerdo en que no todo lo que dice el profesor tiene que ser así, yo también aprendí algo nuevo. Felicidades por tu código, que bueno que lo pudiste resolver.

Gerardo analizando tu código, me parece que hace algo parecido al "repeat - until" de pascal.. Ejecuta la acción hasta que se cumpla la condición. Yo la hice al revés, si se cumple la condición ejecuta la acción.. Esta buenísimo compartir diferentes formas...

Te comparto mi codigo espero sea de ayuda

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

  let inicioDeSesionRegistrado = "alura";
  let contrasenhaRegistrada = "alura321";

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

  let intentos = 1;
  while (intentos < 3) {
    intentos++
    if (inicioDeSesionRegistrado == inicioDeSesionIngresado && contrasenhaRegistrada == contrasenhaIngresada) {
      alert("Bienvenido al sistema " + inicioDeSesionIngresado);
      break;
    } else {
      alert("inicio de sesión inválido. Favor intente de nuevo");
    }
    inicioDeSesionIngresado = prompt("Ingrese su usuario");
    contrasenhaIngresada = prompt("Ingrese su contraseña");
    alert("Has superado los " + intentos + " intentos");
  }


</script>

me gusta esta dinámica de trabajo, y se agradece mucho las colaboraciones.

Excelente dinámica de trabajo y compañerismo.