Solucionado (ver solución)
Solucionado
(ver solución)
4
respuestas

Interrumpiendo una repetición.

Hola buenas noches, realice lo visto en el video, pero no logro que funcione bien. Asi adivine el número a la primera oportunidad me dice que acerte en el intento 4 y al finalizar los intentos no me imprime en la pantalla nada de lo que esta fuera del ciclo while. Ayuda por favor y gracias de ante mano.

<meta charset="UTF-8">

<h1>Adivina el número oculto.</h1>

<script>

  function saltarLinea(){

    document.write("<br>");

  }

  function imprimir(frase){

    document.write(frase);
    saltarLinea();

  }

  let numAleatorio = Math.round(Math.random() * 10)
  let intentos = 4;
  let contador = 1;

  while(contador <= intentos){
    let numIngresado = parseInt(prompt("Por favor ingrese un número del 1 al 10"))

    if (numAleatorio == numIngresado) {
      alert("Acertaste, en el intento " + intentos + " el número oculto era el " + numAleatorio);
      break;
    }

    else {
      alert("Te has equivocado.");
    }

    contador ++;
  }

  if (numAleatorio == numIngresado) {
    imprimir("Acertaste, en el intento " + intentos + " el número oculto era el " + numAleatorio);
  }

  else {
    imprimir("Te has equivocado, el número oculto era el " + numAleatorio);
  }

  imprimir("Fin");

</script>
4 respuestas
solución!

Hola Ivan, qué tal todo?

Respecto a que no te imprime el número de intentos esto es debido a que estás imprimiendo la variable intentos la cual tiene un valor definido por ti mismo de 4.

let intentos = 4;

Para imprimir la cantidad de intentos reales debes imprimir la variable que contabiliza el número de iteraciones de tu ciclo while, que en el caso de tu código es la variable contador.

Lo otro, al finalizar el programa no te imprimía nada debido a que declaraste la variable numIngresado con let, lo cual limitaba la utilización de la misma a solamente dentro del ciclo while:

let numIngresado = parseInt(prompt("Por favor ingrese un número del 1 al 10"))

Al estar limitado su scope (alcance) a solamente dentro del ciclo while al intentar utilizarla después del ciclo para revisar si es igual al numAleatorio te daba error y ahí paraba la ejecución del script provocando que no se imprimiera nada de lo restante, en este caso el else.

Finalmente el código corregido quedaría así:

<meta charset="UTF-8">

<h1>Adivina el número oculto.</h1>

<script>

  function saltarLinea(){

    document.write("<br>");

  }

  function imprimir(frase){

    document.write(frase);
    saltarLinea();

  }

  let numAleatorio = Math.round(Math.random() * 10)
  let intentos = 4;
  let contador = 1;

  while(contador <= intentos){
    var numIngresado = parseInt(prompt("Por favor ingrese un número del 1 al 10"))

    if (numAleatorio == numIngresado) {
      alert("Acertaste, en el intento " + contador + " el número oculto era el " + numAleatorio);
      break;
    }

    else {
      alert("Te has equivocado.");
    }

    contador ++;
  }

  if (numAleatorio == numIngresado) {
    imprimir("Acertaste, en el intento " + contador + " el número oculto era el " + numAleatorio);
  }

  else {
    imprimir("Te has equivocado, el número oculto era el " + numAleatorio);
  }

  imprimir("Fin");

</script>

Espero haber resuelto tu duda, saludos!

El profe se confundió en esta parte del código: alert("Acertaste, en el intento " + intentos + " el número oculto era el " + numAleatorio); Se debe reemplazar la constante intentos por la variable contador: alert("Acertaste, en el intento " + contador + " el número oculto era el " + numAleatorio);

Muchas gracias por sus invaluables aportes, me permirieron encontrar la solución y aprender mas en este maravilloso proceso.

en el video no declaran la variable intento si asierta