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

Trabajando con Condicionales: Ejercicio mal planteado?

Me parece que la respuesta B hace exactamente lo mismo que la respuesta D. Sin embargo la respuesta B sale como opción errónea.

Creo que el ejercicio esta mal planteado porque según el enunciado hay dos problemas por resolver:

  • Problema 1: " al intentar usar el descuento de 5,000 millas, no se aplica ningún descuento"
  • Problema 2: "Los clientes con más de 30,000 millas están recibiendo un descuento superior al que deberían recibir"

El problema 2 no lo pude replicar. No encontré ninguna instancia en la que los clientes con mas de 30mil millas pudieran recibir mas descuento de lo indicado

Y el problema 1, radica en como quiere el cliente que funcione el sistema porque primero dice que "Personas con una cantidad de millas INFERIOR A 5,000 no reciben descuento" y luego dice que "Personas con una cantidad de millas SUPERIOR A 5,000, pero inferior a 30,000 reciben un 10% de descuento". El cliente define que quiere para el rango inferior y el rango superior a 5mil, pero no dice que quiere para los que tienen exactamente 5mil, por lo tanto no se le asigna ningún porcentaje de descuento a los que tienen exactamente 5mil.

Estoy mal con ese análisis?

PD. Incluso con el código de la respuesta D, los clientes con exactamente 5mil millas siguen sin recibir descuento

5 respuestas

Que tal!

Respecto a la respuesta B, tenes razón en que hace exactamente lo mismo que la respuesta D. Ambas respuestas cambian la condición del segundo if para que sea cantidadMillas >= 5000. De esta manera, el if se ejecuta siempre para los clientes con entre 5,000 y 30,000 millas. Es decir, que la condicional deberia se mayor o igual.

Sin embargo, la respuesta B es errónea porque no resuelve el problema planteado. ya que que los clientes con exactamente 5,000 millas no reciben ningún descuento.

La respuesta D tampoco resuelve el problema. ya que radica en la ambigüedad de la regla de negocio. la misma establece que las personas con una cantidad de millas inferior a 5,000 no reciben descuento. Sin embargo, no establece lo que ocurre con las personas con exactamente 5,000 millas.

Para resolver el problema necesitamos especificar claramente lo que ocurre con las personas con exactamente 5,000 millas. Una posibilidad es establecer que estos clientes reciben un descuento del 10%.

En conclusión, la respuesta correcta para modificar el código es cambiar la condición del segundo if para que sea cantidadMillas >= 5000. Sin embargo, esto no resuelve el problema . Para resolverlo, necesitamos especificar claramente lo que ocurre con las personas con exactamente 5,000 millas.

En cuanto a tu comentario de que el ejercicio está mal planteado, estoy de acuerdo contigo.

En cuanto a este código y tomando en cuenta que el error radica en que no esta aplicando los porcentajes según la cantidad de millas. Considero que la solución podrías ser más sencilla y ajustar un poco el código definiendo que al momento de ingresar la cantidad de millas ingresadas por el usuario se puedan encajar a las opciones disponibles; es decir:

Si al usuario le estamos indicando que debe ingresar su cantidad de millas para aplicar cierto descuetno, también debemos indicarle cual es el porcentaje asignado. En lo personal, consideré realizar la siguiente modificación:

  1. Indicarle a l código que debe reconocer las cantidades = o > al número establecido para cada nivel de descuento.
  2. Brindarle al usuario un mensaje de alerta para que este pueda conocer que porcentaje le está siendo aplicado según el número de millas que posee.

let porcentajeDescuento = 0; let cantidadMillas = prompt("Ingrese la cantidad de millas"); if (cantidadMillas >= 30000) { porcentajeDescuento = 20; alert("Tu porcentaje de descuento es del 20%") } else if (cantidadMillas >= 5000) { porcentajeDescuento = 10; alert("tu porcentaje de descuento es de 10%") } else { porcentajeDescuento = 0; alert("Aún no cuentas con un descuento aplicable") }

Con esta modificación considero que resolvemos el problema en ambas vías, tanto para el usuario y para nuestra empresa ya que con esto garantizamos que el porcentaje de descuento que se aplique sea el correcto.

Soy nuevo en esto, así que agradezco cualquier comentario o corrección a mi análisis y solución propuesta.

me encuentro revisando el mismo problema, creo que esta mal planteado, no veo razón por la que se aplique un porcentaje superior a los usuarios con más de 30´000 millas, y para los usuarios con exactamente 5´000 millas con el código original no reciben porcentaje de descuento, en cuanto a las respuestas no veo forma en la que realmente corrijan las fallas del código, de hecho el inciso A tiene un error en su variable por que define la variable como cantidadMillas y después en el if la llama como cantidadDeMillas agregando el "De". Si fuese necesario un cambio en el código yo propondría este:

let porcentajeDescuento = 0; let cantidadMillas = prompt("Ingrese la cantidad de Millas"); if (cantidadMillas >= 30000) { porcentajeDescuento = 20; } else if (cantidadMillas < 30000 && cantidadMillas >= 5000) { porcentajeDescuento = 10; } else { porcentajeDescuento = 0; } alert(porcentajeDescuento);

(El alert lo incluyo para darnos cuenta del porcentaje de descuento real)

Si revisas el código original hace lo que piden(para solucionar el problema de que los que tienen exactamente 5 mil y 30 mil millas se cambia el > por un >= y ya se soluciona), si colocas un console.log(porcentajeDescuento) al final del código y abres la consola en el navegador vas a ver que el código si hace lo que pide, supongo les falto corregir el ejercicio

Siento que esta mal planteado el problema pero lo pude resolver de la siguiente manera:

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

if (cantidadMillas >= 5000 && cantidadMillas <30000) { porcentajeDescuento = 10;

        alert(`Felicidades obtuviste un descuento del: ${porcentajeDescuento}% `);

} else if (cantidadMillas > 30000) { porcentajeDescuento = 20; alert (Felicidades obtuviste un descuento del: ${porcentajeDescuento}% );

} else { porcentajeDescuento = 0;

alert('No obtuviste ningun descuento')

}