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)
3
respuestas

No puedo ejecutar mi programa

Cunado intento ejecutar mi código nunca termina de cargar, ya lo repase varias veces y lo logro entender que ocurrió

<meta charset="utf-8">


<input/>
<button> Verificar si acerto con el secreto </button>


<script> 

    function aleatorio(){
       return Math.round(Math.random()*10); 
    }

    function sortearNumeros (cantidad){
       var secretos = [];
       var contador = 1;

       while (contador <= cantidad){
          var numeroAleatorio = aleatorio();
          console.log(numeroAleatorio)
          var encontrado = false;

          if (numeroAleatorio != 0) {
              for (var posicion = 0; posicion < secretos.length; posicion++){
              if (numeroAleatorio = secretos[posicion]) {
                  encontrado = true;
                  break;
              }
          }

            if (encontrado == false) {
            secretos.push(numeroAleatorio);
            contador++;
            }  
          }

     }

     return secretos
    }

    var secretos = sortearNumeros (4);

    console.log(secretos)


    var input = document.querySelector("input");
    input.focus();

    function verificar() {

        var encontrado = false;

        for(var posicion = 0; posicion < secretos.length; posicion++){

            if (parseInt(input.value) == secretos[posicion]) {

                alert("Usted acertó");
                encontrado = true;
                break; 
            }
        }

        if (encontrado == false) {

            alert("Uster erró")
        }

        input.value = "";
        input.focus();
    } 

    var button = document.querySelector("button");
    button.onclick = verificar;


</script>
3 respuestas
solución!

Hola Damian , al parece solo te falta un igual en la linea 25 , al comparar el numero aleatorio que generamos con el arreglo.

  if (numeroAleatorio == secretos[posicion]) {
                  encontrado = true;
                  break;
              }

Hola Damian,

Tu problema era que estabas generando un bucle infinito en el while de la línea 18 ya que en caso de entrar en el primer if (línea 23) no incrementabas el contador.

Te dejo el código solucionado:

<meta charset="utf-8">


<input/>
<button> Verificar si acerto con el secreto </button>


<script> 

    function aleatorio(){
       return Math.round(Math.random()*10); 
    }

    function sortearNumeros (cantidad){
       var secretos = [];
       var contador = 1;

       while (contador <= cantidad){
          var numeroAleatorio = aleatorio();
          console.log(numeroAleatorio)
          var encontrado = false;

          if (numeroAleatorio != 0) {
              for (var posicion = 0; posicion < secretos.length; posicion++){
              if (numeroAleatorio = secretos[posicion]) {
                  encontrado = true;
                  contador++;
                  break;
              }
          }

            if (encontrado == false) {
            secretos.push(numeroAleatorio);
            contador++;
            }  
          }

     }

     return secretos
    }

    var secretos = sortearNumeros (4);

    console.log(secretos)


    var input = document.querySelector("input");
    input.focus();

    function verificar() {

        var encontrado = false;

        for(var posicion = 0; posicion < secretos.length; posicion++){

            if (parseInt(input.value) == secretos[posicion]) {

                alert("Usted acertó");
                encontrado = true;
                break; 
            }
        }

        if (encontrado == false) {

            alert("Uster erró")
        }

        input.value = "";
        input.focus();
    } 

    var button = document.querySelector("button");
    button.onclick = verificar;


</script>

Recuerda que siempre se debe incrementar antes del break, ya que al llegara esa instrucción el programa saldrá del bloque.

Saludos!

Hola Benjamin , tu codigo genenera un array de 1 solo objeto , por eso el contador solo se incrementa cuando el numero generado no esta en el array sercretos.