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

Desastre2_Ayuda por favor!

El problema del loop ya lo solucioné.

Ahora tengo error en la linea 43: console.log(numeroAleatorio) Lo borro ya que no es indispensable verlo en consola sino que el programa funcione.

Y por último tengo error en la linea 47 donde dice: boton.onclick = verificar; Me arroja error de que la variable "numeroAleatorio" no está definida, pero no se como hacerlo (crei que estaba definida dentro del while)

<meta charset="UTF-8">

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

<script>    
function aleatorio() {

    var secretos = Math.round(Math.random()*10); 

    }

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

        while(contador <= cantidad) {
            var numeroAleatorio = aleatorio();
            console.log(numeroAleatorio)   //MUESTRA EL REGISTRO EN EL NAVEGADOR
            var encontrado = false;

            if (numeroAleatorio !=0 ) {
                for (var posicion = 0; posicion < secretos.length; posicion++) {
                    if (numeroAleatorio == secretos[posicion]) {  //VAR posicion EN LUGAR DE VAR i
                        encontrado = true;
                        break;     
                    }
                }
                 if (encontrado == false) {
                    secretos.push(numeroAleatorio);  //push IGRESA VALORES A LA VARIABLE
                    contador++
                }
            }
            break;
        }
        return secretos
    }




    var secretos = sortearNumeros(4);
    console.log(numeroAleatorio)


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

</script>
2 respuestas
solución!

Hola Martin, el problema es que la variable la declaraste dentro del While y a eso se le llama variable local, esa variable existe solo dentro del While por eso no te la reconoce fuera. Lo que tenés que hacer es primero declararla fuera del While (para que sea una variable global) sin darle ningún valor var numeroAleatorio; y después dentro del While le das el valor numeroAleatorio = aleatorio();. Espero que te haya ayudado :)

Hola, yo también tengo la variable declarada dentro del while y me funciona sin inconveniente como lo hizo el instructor, me confunde un break que tu tienes y yo no, antes de return secretos. Cuando antes del último video él puso el problema de resolver que entre los números del arreglo no podía estar el 0, yo lo resolví dentro del for agregando las dos condiciones con && para garantizar que las dos se cumplieran: la primera para evitar que fuera repetido y la segunda para que no fuera igual a 0, es decir, no hice el if que tienes antes del for. ¿Podrías compartir todo el código de tu programa? y con gusto ayudo a revisar cuál puede ser el error, la idea es ver tu código de principio a fin, pues realmente así es que uno es más consiente de qué pudo suceder para que no funcione.En todo caso, te comparto el mío, pero la idea sería ver tu código completo. Saludos,

Catherine

<meta charset="UTF-8">
<input>
<button>Verificar si Acertó con el secreto</button>


<script>

    //var secreto = Math.round(Math.random()*10);

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

    function sortearNumeros(cantidad){

        var contador = 1;
        var secretos = [];

        while (contador <= cantidad){

            var numeroAleatorio = aleatorio();
            console.log(numeroAleatorio);
            var encontrado = false;

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


        }

        return secretos;

    }


    var secretos = sortearNumeros(4);




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

    function verificar (){

        var encontrado = false;

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

            if (parseInt(entrada.value) == secretos[pos]){
                alert("Usted acertó");
                encontrado = true;
                break;
            }
        }    

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


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

    }


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

</script>