3
respuestas

Me sigue figurando el cero, ¿Cómo resolverlo?

Hola, compañeros. Les quiero compartir mi código que siempre suelo hacerlo a la par con el profesor y he visto el video muchas veces y aún me sigue saliendo el cero al momento de ejecutar el código e incluso ahora lo repite. Espero me puedan ayudar y corregir.

<meta charset="UTF-8">

<input/>
<button>Verificar si acertó 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(posicion = 0; posicion < secretos.length; posicion++) {
            if (parseInt(input.value) == secretos[posicion]) {
                alert("Ustde acertó");
                encontrado = true;
                break;
            }

        }

        if (encontrado == false) {
            alert("Usted erró");
        }


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

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

</script>

Muchas gracias de antemano!!!!

3 respuestas

Pasa que si aleatorio es 0 lo mete igual, porque en el segundo if encontrado sigue siendo false y lo mete en el array. Particularmente creo haber leido en el foro que en este ejercicio el profesor se habia equivocado, asi que recomiendo que lo pienses sin fijarte en lo que hizo. Tambien recomiendo dividir todo el programa en funciones lo mas que puedas para que lo puedas resolver de a pedacitos y con cada pedacito resuelto resolver todo. Te adjunto como lo hice yo...

<meta charset = "utf-8">

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

<script>
    var secretos = sortearNumeros(4);
    var input = document.querySelector("input");
    var button = document.querySelector("button");
    input.focus();
    button.onclick = verificar;
    console.log(secretos);

    function verificar(){
        var encontrado = false;
        for(var i = 0; i < secretos.length; i++){
            if(parseInt(input.value) == secretos[i]){
                alert("Usted acerto");
                encontrado = true;
                break;
            }
        }
        if(encontrado == false){
            alert("Usted erro");
        }
        input.value = "";
        input.focus();
    }

    function sortearNumeros(cantidadNumeros){
        var secretos = [];
        while(secretos.length < cantidadNumeros){
            var numero = Math.round(Math.random() * 10);
            if(numero != 0){
                if(!yaSeEncuentra(secretos, numero)){
                    secretos.push(numero);
                }        
            }

        }
        return secretos;
    }

    function yaSeEncuentra(secretos, numero){
        for(var i = 0; i < secretos.length; i++){
            if(secretos[i] == numero){
                return true;
            }
        }
        return false;
    }



</script>

Buenas tardes Julio, el tercer "if" donde la condición es encontrado == false, debe ubicarse dentro del primer "if" donde la condición es si el numeroAleatorio no es 0. Por otro lado, en este programa hay dos variables que se llaman parecido, la variable "secreto" y la variable "secretos". Te copie tu código corregido y funciona bien. Espero haber sido de ayuda. Saludos!

<meta charset="UTF-8">

<input />
<button>Verificar si acertó con el secreto</button>

<script>
    function aleatorio() {
        return Math.round(Math.random() * 10);

    }

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

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

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

        }

        return secreto;
    }


    var secretos = sortearNumeros(4);

    console.log(secretos);

    var input = document.querySelector("input");
    input.focus();
    var secreto = [];

    function verificar() {
        var encontrado = false;

        for (posicion = 0; posicion < secreto.length; posicion++) {
            if (parseInt(input.value) == secreto[posicion]) {
                alert("Ustde acertó");
                encontrado = true;
                break;
            }

        }

        if (encontrado == false) {
            alert("Usted erró");
        }


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

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

</script>

Estimado Julio Carlos Bernaola Lozano, el programa solo tiene que comparar el valor digitado en el input, con el numero que se genere, es mejor hacerlo un poco mas simple. Aqui te dejo mi codigo, para que te sirva de referencia.

<meta charset="utf-8">

<input>

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


<script type="text/javascript">
    var secreto = Math.round(Math.random()*10);
    var command = document.querySelector("button");
    var input = document.querySelector("input");
    input.focus();

    function saltarLinea(numero){
        for (var i = 1; i <= numero; i++) {
            document.write("<br>");
        }
    }

    function imprimir(mensaje) {
        document.write(mensaje);
        saltarLinea(1);
    }

    function verificar() {
        // body...

        if(parseInt(input.value)==secreto){
            alert("Usted acerto.");
        }
        else {
            alert("Usted no acerto. " + secreto);
        }
        input.value = "";
        input.focus();
    }

    command.onclick = verificar;

</script>