Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
2
respuestas

Me sigue generando el número 0 en el arreglo. Ayuda!

Hola amigos, no sé que hice mal, pero me sigue generando el número en el arreglo. ¿Que tengo mal en mi código?

<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 acerto");
                encontrado = true;
                break;

            } 

        }
            if(encontrado == false){

            alert("Usted fallo");
        }

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

    }

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

</script>
2 respuestas

Hola, pues el codigo esta como en los videos, esta es mi version y respuesta a tu problema. Agregué unos comentarios, espero que te ayuden a entender el problema. Solo hace falta remplazar el codigo de la funcion sortearNumeros. Saludos.

//-------Alexis Tercero----------------
    // funcion para generar un lista de numeros aleatorios
    function sortearNumeros (cantidad)
    {
        var secretos = [];
        var contador = 1; 

        var numeroAleatorio = aleatorio();
        var encontrado = false;

        while (contador <= cantidad) 
        {
            console.log(numeroAleatorio) // imprime aunque sea 0
            // excluye al cero del array
            if (numeroAleatorio != 0) 
            {   // excluye numeros repetidos
                for(var posicion = 0;posicion < secretos.length;posicion++)
                {
                    if(numeroAleatorio ==secretos[posicion]){
                    encontrado = true;
                    break;
                    }
                }
                if(encontrado == false)
                {
                    secretos.push(numeroAleatorio);
                    contador++;
                }
                encontrado = false; // resetear el test de numero repetido
            }
            numeroAleatorio = aleatorio();// nuevo numero aleatorio
        }
            return secretos;

    }

Saludos Cristian.

Revisé tu código y encontré que NO agregaste algunas líneas dentro de la condición if (numeroAleatorio != 0) {

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

Debes incluir en la condición las líneas de código if(encontrado == false){ hasta el contador++; y ya funcionará sin incluir el número CERO.

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