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

[Duda] Se tienen solo 3 intentos, pero al final la variable contador imprime como si fueran 4 intentos

Buenas noches, Intenté hacerle las mejoras al programa del juego de la adivinación, pero aunque en el tercer alert imprime que se erró después de 3 intentos, al final me sale un mensaje que dice que se tuvieron 4 intentos. eIngrese aquí la descripción de esta imagen para ayudar con la accesibilidad

3 respuestas

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 (numeroPensado == numeroLanzado){
        //corregir aquí
        alert("acertaste después de " + contador + " intentos, el número pensado era " + numeroPensado);
        break;
    }
    else {
        alert("usted erró después del : "+contador+" intento");
    }
    contador++;
}
if (numeroPensado == numeroLanzado){
    //corregir aquí
    imprimir("usted acertó, después de " + contador + " intentos, el número pensado era " + numeroPensado);
}
else {
    imprimir("usted erró después de "+contador+" intentos, el número pensado era " + numeroPensado);
}
imprimir("fin");

Es porque en el ciclo while, lo ultimo que hace es agregar uno al contador, entonces en el intento 3 hace todo el proceso y luego suma 1. El contador ahora vale 4 y por eso el ciclo while se detiene y continúa con el resto.

En tu programa imprimes un texto, entonces el número actual del contador es 4. Supongo que si agregas un if(contador == 4) significa que no acertó en los intentos que le diste, puedes poner el mensaje que quieras dentro del if

Debe haber maneras más elegantes de hacerlo, pero por ahora es lo único que se me ocurre.. Saludos.

José, yo creo que si deseas mostrar el número de intento que erró o acertó lo debes mostrar en los alert que están dentro del while.

while(contador <= intentos){ var numerolanzado = parseInt(prompt("Ingrese un # entre 0 y 10 ")); if(numeropensado == numerolanzado){ alert("Ud. acertó en el intento. " + contador + " el número pensado era " + numeropensado); break; } else{ alert(" ¡Ud. erró! en su Intento "+ contador) } contador++ }

Cordial saludo

y el final simplemente

if (numeropensado != numerolanzado) { imprimir(" El número pensado era " + numeropensado)