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

[Duda] Corrección en el mensaje que se imprime al final

Quise hacer el juego manteniendo las pistas sobre si es mayor o menor el número. Mi error es que al final, si se erra 3 veces, aparece impreso el mensaje ("usted erró, el número pensado era ") 3 veces. ¿Cómo puedo solucionarlo? El código:

<script type="text/javascript">
    function saltarLinea(){
        document.write("<br>");
        document.write("<br>");
        document.write("<br>");
    }

    function imprimir(frase) {
        document.write(frase);
        saltarLinea;
    }

    var numeroPensado = Math.round(Math.random()*10);
    var intentos = 3;
    var contador = 1;

    while(contador <= intentos){


    var numeroLanzado = parseInt(prompt("Ingrese un número entre 0-10"))

    if (numeroLanzado == numeroPensado) {

        alert("usted acertó, en el intento " + contador + " el número pensado era " + numeroPensado);
            break;
    }

        else{
            if (numeroLanzado > numeroPensado) {
                alert("usted erró, el número pensado era menor que tu número");
            }
            else{
                alert("usted erró, el número pensado era mayor que tu número");
            }
            contador++;
        }


        if (numeroPensado == numeroLanzado){
        //corregir aquí
        imprimir("usted acertó, en el intento " + contador + " el número pensado era " + numeroPensado);
    }
    else {
        imprimir("usted erró, el número pensado era " + numeroPensado);
    }
    imprimir("fin");
}
</script>
2 respuestas
solución!

Hola Tu error ocurre 3 veces por que la linea que dice: imprimir("usted erró, el número pensado era " + numeroPensado); se encuentra dentro del loop while. Una solucion seria eliminar la linea: else { imprimir("usted erró, el número pensado era " + numeroPensado); } imprimir("fin");

y colocar las instrucciones imprimir fuera del bucle/ loop del while

Por ejemplo asi:



<script type="text/javascript">
    function saltarLinea(){
        document.write("<br>");
        document.write("<br>");
        document.write("<br>");
    }

    function imprimir(frase) {
        document.write(frase);
        saltarLinea;
    }

    var numeroPensado = Math.round(Math.random()*10);
    var intentos = 3;
    var contador = 1;

    while(contador <= intentos){


    var numeroLanzado = parseInt(prompt("Ingrese un número entre 0-10"))

    if (numeroLanzado == numeroPensado) {

        alert("usted acertó, en el intento " + contador + " el número pensado era " + numeroPensado);
            break;
    }

        else{
            if (numeroLanzado > numeroPensado) {
                alert("usted erró, el número pensado era menor que tu número");
            }
            else{
                alert("usted erró, el número pensado era mayor que tu número");
            }
            contador++;
        }


        if (numeroPensado == numeroLanzado){
        //corregir aquí
        imprimir("usted acertó, en el intento " + contador + " el número pensado era " + numeroPensado);
    }

}
imprimir("usted erró, el número pensado era " + numeroPensado);
imprimir(" fin");
</script>

Gracias! No me di cuenta que estaba dentro del loop.

Al final seguía imprimiendo el mensaje "usted erró..." aún si se adivinaba bien el número, por lo que le agregué otro IF afuera del loop, y creo que quedó bien:

<script type="text/javascript">
    function saltarLinea(){
        document.write("<br>");
        document.write("<br>");
        document.write("<br>");
    }

    function imprimir(frase) {
        document.write(frase);
        saltarLinea;
    }

    var numeroPensado = Math.round(Math.random()*10);
    var intentos = 3;
    var contador = 1;

    while(contador <= intentos){


    var numeroLanzado = parseInt(prompt("Ingrese un número entre 0-10"))

    if (numeroLanzado == numeroPensado) {

        alert("usted acertó, en el intento " + contador + " el número pensado era " + numeroPensado);
            break;
    }

        else{
            if (numeroLanzado > numeroPensado) {
                alert("usted erró, el número pensado era menor que tu número");
            }
            else{
                alert("usted erró, el número pensado era mayor que tu número");
            }
            contador++;
        }


        if (numeroPensado == numeroLanzado){
        //corregir aquí
        imprimir("usted acertó, en el intento " + contador + " el número pensado era " + numeroPensado);
    }

}

if (numeroPensado != numeroLanzado) {
imprimir("usted erró, el número pensado era " + numeroPensado);
}
imprimir(" fin");

</script>