2
respuestas

[Duda] Preblema con Do..while

Un saludo a todos.

Seguí las instrucciones del profesor y tengo un problema. No importa el valor que ponga en const = pasajeDisponible, siempre al ejecutar en la terminal me sale de resultado Bogotá. Si me pudieran ayudar se los agradecería mucho.

const datos = [
    {
        ciudad:`Bogotá`,
        precio:500
    },
    {
        ciudad:`Lima`,
        precio:400
    },
    {
        ciudad:`Santiago`,
        precio:380
    },
    {
        ciudad:`Montevideo`,
        precio:200
    },
];
const presupuestoDisponible = 400;

let i = 0;
// While... 0 o más veces
// Do... 1 o más veces 
/*while (i < datos.length && datos[i].precio > presupuestoDisponible) {
    i++;
}*/

let ciudadSeleccionada = ``
do {
if (datos[i].precio > presupuestoDisponible) {
   ciudadSeleccionada = datos[i].ciudad
    }
    i++;
} while (i < datos.length && ciudadSeleccionada == ``)
if (ciudadSeleccionada == ``) {
    console.log("No tenemos pasajes disponibles");
} else 
console.log("Puedes comprar pasaje para: " +ciudadSeleccionada);
2 respuestas

Ingrese aquí la descripción de esta imagen para ayudar con la accesibilidad

¡Hola Nailea!

Entiendo que estás teniendo un problema con el bucle do...while en tu código de JavaScript. Parece que independientemente del valor que asignes a la constante "presupuestoDisponible", siempre obtienes "Bogotá" como resultado.

El problema radica en que estás asignando el valor de la ciudad seleccionada dentro del bucle if, pero no estás saliendo del bucle una vez que encuentras una ciudad que cumple con la condición. Esto hace que el bucle continúe ejecutándose y sobrescriba el valor de "ciudadSeleccionada" con las siguientes ciudades que no cumplen con la condición.

Para solucionar esto, puedes agregar una instrucción "break" después de asignar el valor de la ciudad seleccionada. Esto hará que el bucle se detenga una vez que encuentre una ciudad que cumpla con la condición.

Aquí tienes el código corregido:

let ciudadSeleccionada = ``;
do {
    if (datos[i].precio > presupuestoDisponible) {
        ciudadSeleccionada = datos[i].ciudad;
        break; // Agregamos el break para salir del bucle
    }
    i++;
} while (i < datos.length && ciudadSeleccionada == ``);

if (ciudadSeleccionada == ``) {
    console.log("No tenemos pasajes disponibles");
} else {
    console.log("Puedes comprar pasaje para: " + ciudadSeleccionada);
}

Con esta modificación, el bucle se detendrá una vez que encuentre una ciudad que cumpla con la condición y asignará ese valor a "ciudadSeleccionada". Si ninguna ciudad cumple con la condición, se imprimirá el mensaje "No tenemos pasajes disponibles".

Espero que esto resuelva tu problema. ¡Si tienes alguna otra pregunta, estaré encantado de ayudarte! ¡Espero haber ayudado y buenos estudios!

Si este post te ayudó, por favor, marca como solucionado ✓. Continúa con tus estudios! :)