Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
1
respuesta

Tengo una duda con el codigo de javascrip de la respuesta

Buenas tardes Tengo una duda por mas que le pienso y ejecuto en visual con peticion no me da:

este el es codigo de la respuesta:

let porcentajeDescuento = 0;

if (cantidadDeMillas > 30000) {
    porcentajeDescuento = porcentajeDescuento + 20;
} else {
    if (cantidadDeMillas > 5000) {
        porcentajeDescuento = porcentajeDescuento + 10;
    }
}

pero si el usuario digamos pone 5000 le dara descuento 0%

ahora bien yo lo hago asi y me queda bien

let porcentajeDescuento = 0;
let cantidadDeMillas = prompt("Ingresa la cantidad de millas");

if (cantidadDeMillas) {
    if (cantidadDeMillas < 5000) {
        // Menos de 5000 millas, no hay descuento
        alert(`Al tener estas millas ${cantidadDeMillas}, no se aplica ningún descuento.`);
    } else if (cantidadDeMillas >= 30000) {
        // Más de 30000 millas, 20% de descuento
        porcentajeDescuento = 20;
        alert(`Al tener estas millas ${cantidadDeMillas}, se le aplica el descuento de: ${porcentajeDescuento}%`);
    } else {
        // Entre 5000 y 30000 millas, 10% de descuento
        porcentajeDescuento = 10;
        alert(`Al tener estas millas ${cantidadDeMillas}, se le aplica el descuento de: ${porcentajeDescuento}%`);
    }
} else {
    alert("Ingresa un valor válido para la cantidad de millas.");
}

No se si el primero lo estoy ejecutando mal ya que lo estoy pidiendo asi:

let porcentajeDescuento = 0;
let cantidadDeMillas = prompt("Digita la cantidad de millas");

if (cantidadDeMillas > 30000) {
    porcentajeDescuento = porcentajeDescuento + 20;
    alert(`Al tener estas millas ${cantidadDeMillas}, se le aplica el descuento de: ${porcentajeDescuento}%`);
} else {
    if (cantidadDeMillas > 5000) {
        porcentajeDescuento = porcentajeDescuento + 10;
        alert(`Al tener estas millas ${cantidadDeMillas}, se le aplica el descuento de: ${porcentajeDescuento}%`);
    }
}
1 respuesta

¡Hola Brajan!

Gracias por compartir tu duda con nosotros. Entiendo que estás trabajando en un código de JavaScript que calcula un descuento basado en la cantidad de millas que tiene el usuario. Quieres saber por qué el primer código que compartiste no te da el resultado esperado.

Al analizar tu primer código, veo que estás utilizando dos bloques "if" anidados para calcular el descuento. Sin embargo, hay un problema en tu lógica. Si la cantidad de millas es mayor a 30000, se aplica un descuento del 20%. Pero si la cantidad de millas es mayor a 5000, no se aplica ningún descuento adicional. Esto significa que si la cantidad de millas es mayor a 30000, también es mayor a 5000, por lo que se aplicará el descuento del 20% y no se evaluará el segundo "if".

En cambio, en tu segundo código, utilizas una estructura "if-else if-else" para evaluar diferentes rangos de millas y aplicar el descuento correspondiente. Esto es lo correcto, ya que cada rango de millas tiene su propio descuento. Si la cantidad de millas es menor a 5000, no se aplica ningún descuento. Si es mayor o igual a 30000, se aplica un descuento del 20%. Y si está entre 5000 y 30000, se aplica un descuento del 10%.

Por lo tanto, la opción correcta para corregir el código sería la opción D, que es la que estás utilizando en tu segundo código.

Espero que esto aclare tu duda. Si tienes alguna otra pregunta, no dudes en preguntar. ¡Estoy aquí para ayudarte!

Espero haber ayudado y buenos estudios!