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

[Bug] Ninguna es correcta

Las personas con más de 30,000 millas no pueden recibir más de 20% de descuento que es lo máximo a dar de acuerdo con el código, por lo que queda solamente colocarle un >= a los de 5000 para que dé el descuento correcto quedando de la siguiente manera:

let porcentajeDescuento = 0;

let cantidadMillas = prompt("Ingrese la cantidad de millas");

if (cantidadMillas > 30000) {
    porcentajeDescuento = 20;	
} else if (cantidadMillas >= 5000) {
    porcentajeDescuento = 10;	
} else {
    porcentajeDescuento = 0;
}
9 respuestas

Llego a lo mismo, no da error.

Concluyo que no hay error en codigo...

Concuerdo, me gusta tu código y lo entiendo a la perfección, las soluciones propuestas en el ejercicio me marean.

X3 No da error inlcuso las soluciones son mas confusas

a tu solución la entiendo mucho mejor la lógica, gracias.

Ahora, considerando que hay que responder para cerrar curso, veo que la alternativa D igual funciona.

    let porcentajeDescuento = 0;

    let cantidadMillas = prompt("Ingrese la cantidad de millas");

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

Todo los errores logicos estan puestos por mero placer, por ejemplo los que tengan exactamente 30000 no recibiran el 20% de descuento sino 10%, esto esta hecho asi, por que ellos quieren que pongamos sus respuestas para el aprendisaje y todo lo demas se discuta en el foro, asi que no hay ningun bug, esos benditos lo hacen a proposito.

De hecho, el problema y solucion que mencionas en las 5,000 millas tambien se repite con las personas que tienen exactamente 30,000. si pones exactamente 30,000 no te da el descuento de 20% que se supone es lo esperado, te da un descuento del 10%. lo que no he encontrado es que los que tienen mas de 30,000 millas reciban mas descuento, corri el codigo y le puse un alert para que me diera la cantidad de descuento que se les da en base a las millas y no he encontrado el error.

Esta fue la respuesta que le di a otro usuario: por estos simples enunciados:

1-Personas con una cantidad de millas inferior a 5,000 no reciben descuento: ------------Osea las de exactamente 5000 mil si deben de recibir descuento---

2-Personas con una cantidad de millas superior a 30,000 reciben un 20% de descuento: -----------------"Aqui entra en conflicto con el enunciado 3. Deja los de exactamente 30,000 en el limbo".

3-Personas con una cantidad de millas superior a 5,000, pero inferior a 30,000 reciben un 10% de descuento: -------Aqui esta bien la parte de los 30,000 ya en ningun lugar dice que sea menor o igual a 30,000, osea, los de exactamente 30,000 deberian recibir sus 20% de descuento sin ningun problema, pero entra en conflicto con el enunciado #2 y #1, con el #2 por lo que mencione y con del #1 a continuacion, ya que dice personas superior a 5,000, de nuevo a lo mismo, en ningun lugar dice superior o igual a 5,000 entrando directamente en conflicto con el enunciado #1, ya que el #1 solo se aplica a millas "inferiores a 5000", en ningun lugar <=5000 dejando a los 5,000 igual a los 30,000 de la opcion #2 en el limbo.

"Sin embargo, según los informes de los clientes, al intentar usar el descuento de 5,000 millas, no se aplica ningún descuento. Los clientes con más de 30,000 millas están recibiendo un descuento superior al que deberían recibir."

Aqui hay una trampa, lo primero es correcto,al usar 5,000 no tendran ningun descuento ya por lo mencionado arriba. Sus reglas entran en contradiccion constante o las enunciaron mal simplemente, y la otra, los clientes de 30,000 jamas recibiran un descuento superior al que deberian recibir, ya que si se aplica lo de arriba mencionado los de exactamente 30,000 recibirian entonces solo el 10% o no recibirian nada directamente asi que ese "están recibiendo un descuento superior al que deberían recibir" lo pusieron para confundir y enga;ar. En conclusion, el codigo esta lleno de malas practicas de programacion, y todo de manera intencional para que nos pongamos a pensar.