5
respuestas

Codigo

El codigo del curso lo hice exactamente igual, pero cuando cambio de precio, siempre me retorna mi primera opcion si es que entra, y si no entra y hay una opcion que si mas abajo en el mapa, me arroja que no hay disponible, por que es?
5 respuestas

¡Hola Estudiante!

Entiendo que estás teniendo un problema con tu código en JavaScript y estás experimentando un comportamiento inesperado al cambiar el precio. Sin embargo, para poder ayudarte de manera más precisa, necesitaría ver el código que estás utilizando.

Sin embargo, puedo darte algunas sugerencias generales para solucionar este tipo de problemas.

  1. Asegúrate de que estás utilizando la estructura de control adecuada para evaluar las condiciones y seleccionar la opción correcta. Puede ser un if-else, un switch, o cualquier otra estructura que se ajuste a tus necesidades.

  2. Verifica que estás utilizando los operadores de comparación correctos para evaluar las condiciones. Por ejemplo, si estás comparando números, asegúrate de utilizar los operadores de comparación adecuados (>, <, >=, <=, etc.).

  3. Comprueba si estás utilizando correctamente las variables y si están almacenando los valores correctos. Puedes agregar algunas instrucciones de impresión (console.log) para verificar los valores de las variables en diferentes puntos del código y asegurarte de que se están asignando correctamente.

  4. Revisa si hay algún error de sintaxis o de lógica en tu código. A veces, un simple error tipográfico o una condición mal escrita pueden causar comportamientos inesperados.

Recuerda que sin ver tu código específico, es difícil ofrecer una solución precisa. Te recomendaría que revises detenidamente tu código y apliques las sugerencias que te he dado. Si sigues teniendo problemas, no dudes en compartir tu código para que pueda ayudarte de manera más específica.

¡Espero haber ayudado y buenos estudios!

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

este es mi codigo, ya lo revise y sigue saliendo mal, no se si estoy viciado pero ya lo compare.

const datos = [ { 'ciudad' : 'Mexico', 'precio' : 500 }, { 'ciudad' : 'Monterrey', 'precio' : 400 }, { 'ciudad' : 'Guadalajara', 'precio' : 600 }, { 'ciudad' : 'Montevideo', 'precio' : 1200 }, ];

const presupuestoDisponible = 5200;

let i = 0;

/while(i < datos.length && datos[i].precio > presupuestoDisponible) { i++; }/

let ciudadSeleccionada = ''; do { if (datos[i].precio <= presupuestoDisponible) { ciudadSeleccionada = datos[i].ciudad; break; } i++;

} while(i < datos.length && ciudadSeleccionada == '')

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

Hola, ¿Cómo estás?

Acabo de darle una revisada a tu código y creo que ya se a lo que te refieres.

Tienes definida la siguiente lista de destinos - precios:

const datos = [ 
    { 
        'ciudad' : 'Mexico', 
        'precio' : 500 
    }, 
    { 
        'ciudad' : 'Monterrey', 
        'precio' : 400 
    }, 
    { 
        'ciudad' : 'Guadalajara', 
        'precio' : 600 
    }, 
    { 
        'ciudad' : 'Montevideo', 
        'precio' : 1200 
    }
];

Entonces, al momento de entrar en tu ciclo while:

const presupuestoDisponible = 5200;

let i = 0;

while(i < datos.length && datos[i].precio > presupuestoDisponible)
{
    i++; 
}

Va a analizar las condiciones:

  1. ¿i es menor al tamaño de tu arreglo datos? En este caso si se cumple la condición, ya que i es igual a 0 y tu arreglo tiene 4 elementos, por lo tanto 0 es menor a 4, y devuelve como resultado verdadero (true).
  2. ¿El precio del dato de la posición i es mayor al presupuesto disponible? Aquí no se cumple la condición, ya que i es igual a 0, y el elemento del arreglo datos en la posición 0 es México, el cual tiene un precio de $500. Entonces compara ¿$500 es mayor a $5200?, y devuelve como resultado falso (false).

Entonces, a pesar de que se cumple la primera condición, como estás aplicando una operación AND (&&), se devuelve un false debido a que la segunda condición no se cumple (Recuerda que solo se devuelve verdadero cuando ambas condiciones o sentencias se cumplen). Por lo mismo no entra al ciclo while y la variable i conserva su valor de 0, y al seguir con la otra parte del código:

let ciudadSeleccionada = ''; 
do 
{ 
    if (datos[i].precio <= presupuestoDisponible) 
    { 
        ciudadSeleccionada = datos[i].ciudad; 
        break; 
    } 

    i++;

} while(i < datos.length && ciudadSeleccionada == '');

La ciudad seleccionada se queda con el valor de datos[i].ciudad = datos[0].ciudad = "México".

Si quieres que tu programa te diga cuál es el boleto más caro para el que te alcanza con el presupuesto disponible con el que cuentas, solamente tienes que cambiar el orden de tus elementos de mayor a menor precio de la siguiente manera:

const datos = [ 
    { 
        'ciudad' : 'Montevideo', 
        'precio' : 1200 
    },
    { 
        'ciudad' : 'Guadalajara', 
        'precio' : 600 
    }, 
    { 
        'ciudad' : 'Mexico', 
        'precio' : 500 
    }, 
    { 
        'ciudad' : 'Monterrey', 
        'precio' : 400 
    }
];

Con eso tu programa ya debería de tener el comportamiento que deseas.

Espero que esto resuelva tu duda / problema.

¡Exito con el resto del curso!

Claro, eso lo resuelve parcialmente, y lo aradezco, pero aun asi si pogo un precio mas caro, me da mexico como opcion, como podemos solucionar eso? Saludos y gracias

Hola de nuevo, disculpa por tardar en responder.

Me parece que tal vez no guardaste tu archivo después de haber realizado el reorden de los datos por los precios. Mira, tu código modificado quedó de la siguiente manera:

const datos = [ 
    { 
        'ciudad' : 'Montevideo', 
        'precio' : 1200 
    },
    { 
        'ciudad' : 'Guadalajara', 
        'precio' : 600 
    },
    { 
        'ciudad' : 'Mexico', 
        'precio' : 500 
    }, 
    { 
        'ciudad' : 'Monterrey',
        'precio' : 400 
    }
];

const presupuestoDisponible = 5200;

let i = 0;

while(i < datos.length && datos[i].precio > presupuestoDisponible)
{ 
    i++; 
}

let ciudadSeleccionada = ''; 

do 
{ 
    if (datos[i].precio <= presupuestoDisponible) 
    { 
        ciudadSeleccionada = datos[i].ciudad; 
        break; 
    } 
    i++;

} while(i < datos.length && ciudadSeleccionada == '')

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

Y con ese código obtengo las siguientes salidas:

Para cuando tengo $5200 de presupuesto:

Resultado del programa al ejecutarlo con $5200

Para cuando tengo $1199:

Resultado del programa al ejecutarlo con $1199

Para cuando tengo $599:

Resultado del programa al ejecutarlo con $599

Para cuando tengo $499:

Resultado del programa al ejecutarlo con $499

Como puedes ver, en mi caso funciona bien el programa para cada uno de los diferentes precios. Puede que tal vez después de publicar tu duda en el foro, trataste de solucionar el problema por tu cuenta y sin querer modificaste alguna parte importante de tu código que ocasione que siempre te devuelva México como la opción disponible, o puede que no hayas guardado bien tu código después de haber hecho las modificaciones. Lo último que se me ocurre, es que trates de eliminar tu terminal (si es que estás en Visual Studio Code), a ver si con eso solucionas tu problema.

Para eliminarla, solo basta con que le des clic al ícono del bote de basura que aparece arriba de la terminal

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

Ojala que con esto tu problema quede resuelto. Saludos.