Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Solucionado (ver solución)
Solucionado
(ver solución)
9
respuestas

[Duda] Trabajando con condicionales - Código es correcto

En la actividad de las condicionales del ejercicio de viajes, el código brindado funciona correctamente. Para no dejar la actividad sin repuesta, como podemos responder a esa pregunta o que opcion sugieren que seleccionemos.

9 respuestas
solución!

Creo que está un poco mal planteado. La consigna dice que "...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." Sin embargo las condiciones que hay que cumplir son: "Personas con una cantidad de millas inferior a 5,000 no reciben descuento. Personas con una cantidad de millas superior a 30,000 reciben un 20% de descuento. Personas con una cantidad de millas superior a 5,000, pero inferior a 30,000 reciben un 10% de descuento."

Por tanto, si yo tengo 5000 millas no debo recibir descuento, pues la condición es que tenga millas superiores a 5000 (5001 en adelente si tratamos con enteros solamente) y lo mismo para el que tiene 30000, sólo le corresponde 10% de descuento y sólo si tiene 30001 en adelante le corresponde el 20%.

Otra cosa es que el último else creo que es redundante, pues si no entra a ninguna de las dos condiciones de los primero if, entonces el valor inicial no se modifica, sigue en "0" y por tanto no veo necesidad de asignarle otra vez el valor "0".

Por lo tanto, no veo que respuesta es la correcta si bien la 4 donde dice "Haciendo la utilización de un bloque ‘if’ dentro del bloque ‘else’..." es la que el sistema acepta como correcta. Si lo hago así funciona:

//Descuentos por millas
let porcentajeDescuento = 0;
let cantidadMillas=50000;

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

//Muestro el resultado
alert(porcentajeDescuento+'% de descuento.');

Lo que menciona Andres Quiroga es correcto, sin embargo la respuesta correcta se marca como incorrecta, puesto que el código final queda sin el bloque else, pero seleccionando "Removendo el bloque ‘else’ de la estructura condicional" mostrará que la respuesta es incorrecta. Hay algo mal en el ejercicio, ya sea el código ejemplo o la planteación del problema.

El código proporcionado funciona como se espera, no tiene errores y solo me quedé pensando en la aprte del "Sin embargo, según los informes de los clientes, al intentar usar el descuento de 5,000 millas, no se aplica ningún descuento." por que no se incluye en la condición el igual, pero no se aplican descuentos extras a las personas que tienen más de 30k de millas. La única opción correcta para mí sería sacarle el else.

Y lo que menciona Andres Quiroga "Por tanto, si yo tengo 5000 millas no debo recibir descuento, pues la condición es que tenga millas superiores a 5000 (5001 en adelente si tratamos con enteros solamente) y lo mismo para el que tiene 30000, sólo le corresponde 10% de descuento y sólo si tiene 30001 en adelante le corresponde el 20%." Se menciona que la problematica de los clientes es : "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."

  • Si la regla de negocio dice : "Personas con una cantidad de millas superior a 5,000, pero inferior a 30,000 reciben un 10% de descuento.", -> Entonces el problema que plantean los clientes de que no se les aplica el descuento si tienen 5k de millas exactas es un error del cliente y no de la RN.
  • La segunda RN dice que : Personas con una cantidad de millas superior a 30,000 reciben un 20% de descuento. -> Entonces el problema que plantean los clientes también está mal ya que no se les aplica un descuento extra.

Y sigo sin comprender por que la última opción dicen que es la verdadera jaja

Me podrian indicar si la resolución es correcta y donde la pruebo ?

Planteamiento del problema : 0-4999 millas = 0% descuento 5000= 0% descuento 5001-29999 millas = 10% descuento 30000 millas = (20% +descuento extra )= descuento superior al 20% 30001 - en adelante solo el 20%

Solucion Lógica 1. 0-4999 millas ( correcto según indicaciones) = 0 % descuento 5000-29 999 millas = 10% descuento 30 000- en adelante = 20% descuento

así resolvemos el problema de las 5000 millas (para que tenga descuento) y de 30000 millas ( se evita el (error del descuento superior)y los que tienen 30 001 millas tendran su 20% descuento como se habia indicado.

resolución :

let porcentajeDescuento = 0;

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

Del mismo modo opino, aunque se remueva el bloque else sigue siendo incorrecta.

la respuesta a ese codigo seria con un if anidado al else del final

El codigo planteado es correcto y funciona a la necesidad planteada , no existe alternatica que lo corrija, ( por error marque una opcion ya que mi pantala es tactil)

El codigo planteado es correcto y funciona a la necesidad planteada , no existe alternatica que lo corrija, ( por error marque una opcion ya que mi pantala es tactil)