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

Ejercicio mal planteado?

Hola! En el ejercicio "Trabajando con condicionales" no puedo encontrar el caso en donde con una cantidad mayor a 30000 millas el programa asigna un monto superior de descuento como indica el problema planteado:

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.

El codigo planteado:

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;
}

A esto agrego que en la solución brindada por la plataforma aun existe (si es que entendí bien el otro problema) el inconveniente de que a los usuarios no se les brinda un descuento con una cantidad de 5000 millas. Imagino que no soy el único al que le llama la atención ¿no?

16 respuestas

Es verdad, me molesté mucho porque no veía el error, y al probar el código este funcionaba perfectamente, de hecho contesté Removendo el bloque ‘else’ de la estructura condicional (no me comí la "i" del Removiendo, así aparece) porque si le quitamos la última condicional hace lo mismo Queda así:

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

//Para comprobar
console.log(cantidadMillas);
console.log(porcentajeDescuento);

Hice lo mismo, me dio la sensacion que esta mal planteado el problema, durante la ejecucion del codigo la variable porcentajeDescuento no se modifica a menos que cumpla la condicion no entendi lo que quisieron explicar confunde mas todavia la logica

Tambien hacen una aclaracion Personas con una cantidad de millas superior a 5,000, pero inferior a 30,000 reciben un 10% de descuento.

entiendo que si paso por la primer condicion cantidadMillas > 30000 y no se cumplio es logico que las millas son inferiores a ese valor, entendi bien? por l oque va a continuar la ejecucion y evaluar la condicion siguiente cantidadMillas > 5000 si ninguna de las 2 se cumple el valor de la variable porcentajeDescuento no deberia haber cambiado ya que se inicio en 0* cero*

Lo mismo me paso, probe el codigo y hasta puse alertas para ver si el codigo estaba mal, pero todo funciono bien.

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

if (cantidadMillas >= 30000) { porcentajeDescuento = 20; alert(El porcentaje de descuento es: ${porcentajeDescuento}%); } else if (cantidadMillas >= 5000) { porcentajeDescuento = 10; alert(El porcentaje de descuento es: ${porcentajeDescuento}%); } else { porcentajeDescuento = 0; alert(El porcentaje de descuento es: ${porcentajeDescuento}%); }

Hay otras formas de resolverlo, igual concuerdo en que está mal planteado

Hola, me paso lo mismo, igual creo que el ejercicio esta mal planteado, y ya lo corroboré, y vine a confirmar aquí de todos modos jaja gracias

Tambien opino que esta mal planteado, no encontre un error, y solo probe todas las opciones para ver que decia la plataforma

Yo opino lo mismo esta mal planteado...

Saludos a todos los compañeros,

He notado que existe una posible exclusión de la regla de descuento del 10% para aquellos que acumulan 5000 millas. Además, hay una aclaración necesaria sobre la aplicación del descuento del 10% en lugar del 20% para aquellos con 30000 millas.

La razón detrás de esto radica en cómo se han formulado las condiciones en el código. La condición if excluye específicamente el caso en el que la cantidad de millas es igual a 30000, y la condición else if (que se evalua si no se cumple la if) se activa para aquellos con más de 5000 millas(e incluye a los que tienen 30000)

Sin embargo, entiendo que la respuesta actual no permite la posibilidad de aplicar descuentos mayores al 20% para aquellos con más de 30000 millas(mas no es posible la afirmación de descuentos superiores como se indica que está sucediendo). Las opciones de código ofrecidas hasta ahora no cumplen completamente con los requisitos, y parece que hay ciertas contradicciones en los mismos y en los requisitos previos.

Y como dicen los compañeros si no se aplica ningún descuento es obvio que el descuento es el inicialmente asignado, o sea 0%

if (cantidadMillas > 30000) {
    porcentajeDescuento = 20;} //a 30000 se le aplica el 10%?
 /*en el siguiente bloque de código: para que 5000 se le pueda aplicar el 10%dto requiere un >= */
else if (cantidadMillas > 5000)
    { porcentajeDescuento = 10;}

yo no lo veo el error, y por lo que leo no hay error como tal en el codigo, aun asi me da miedo seleccionar alguna de las repuesta xq ni si quiera da la opcion de decir que el codigo NO tiene problemas... aun asi tengo curiosidad de si alguien les dio click alguna de las repuesta y que les aparecio? era un ejercicio trampa sin repuesta correcta? xd

Que tal, saludos. Probé el código que sugieren, y encontré lo siguiente:

PROBLEMAS PLANTEADOS:

1.-Al intentar usar el descuento de 5,000 millas, no se aplica ningún descuento: Al probar el código, esto es verdad, porque debería utilizarse un >= para que se les aplique el 10 por ciento de descuento y se cumpla la regla : Personas con una cantidad de millas inferior a 5,000 no reciben descuento. Es decir de 0 a 4999 millas no deberían recibir descuento.

2.- Los clientes con más de 30,000 millas están recibiendo un descuento superior al que deberían recibir. Probé el codigo y al colocar en la comparacion >= se aplica el 20 por ciento de descuento cuando el valor de millas es 30000 o cualquier cantidad mayor, no se define ningun otro valor, como para que se asigne un descuento mayor. A menos que se remueva el condicional else en la segunda comparacion, ahi si se aplican los descuentos del 10 y del 20 por ciento. solo con cantidades mayores a 30000 millas.

Esto lo solucione así:

CODIGO PLANTEADO POR UN SERVIDOR:

let porcentajeDescuento = 0; let cantidadMillas = prompt("Ingrese la cantidad de millas"); if (cantidadMillas >= 30000) { porcentajeDescuento = 20; console.log("Su descuento es del 20 por ciento"); } else if (cantidadMillas >= 5000) { porcentajeDescuento = 10; console.log("su descuento es del 10 por ciento"); } else { porcentajeDescuento = 0; console.log("todavia no aplica para un descuento"); }

Asi se cumplen las 3 reglas que nos estan pidiendo:

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.

Pero en las respuestas no menciona algo como esto, así que lo dejé sin contestar

Hay una opción que la marca como correcta, aunque esta opción no considera cuando colocas 5000 o 30000, solo valores diferentes a estos 2 valores , ya sea mayores o menores. La que mas se acerco a la solucion, esa la marque, aunque esa opcion, como les comento, tiene errores aunque el sistema la marca como correcta.

Saludos.

Hola a todos, lo que creo que paso con el ejercicio es que nos solicitaban, cual era la forma mas adecuada de ejecutar el código, ya que la parte de guardar el porcentaje de descuento cuando esta por debajo de 5000 no era necesario, ya que ese valor lo toma desde que declaramos la variable, lo que nos da como resultado un código mas corto, no se si me hice entender pero es mi punto de vista.

Yo concuerdo mal planteado..., La solución que tome fue la Removiendo el bloque ‘else’ de la estructura condicional, porque si le quitamos la última condicional el código sigue funcionando cumpliendo con las reglas solicitadas

Me parece que el ejercicio esta mal planteado y sus respuestas son capciosas ya que no cumplen al 100% con la resolución del mismo. Si es por ahorrar código, basta con un solo bloque if/else que verifique ambas condiciones. Además me parece inapropiado sumar el valor del descuento a la variable centinela ya que por lo que plantea el ejercicio, los descuentos no son acumulativos. Encuentro hasta errores de redacción en el mismo, espero que lo puedan arreglar ya que genera mas dudas que las que resuelve. Saludos.

Opino lo mismo compañero, está mal planteado en cuanto a que el único inconveniente que habría seria es que los usuarios con 5.000 Millas EXACTAS no están recibiendo descuento según el problema, y también creo que ninguna de las respuestas brindadas plantea alguna solución para resolver este inconveniente.

Está mal planteado, ya que si funciona el código tal como está, pero la respuesta es correcta, ya que nos lleva al mismo resultado.

Vine al foro porque el enunciado del ejercicio dice que el código funciona mal porque le otorga porcentajes extra para millas mayores a 30000 y no le otorga porcentajes a las millas menores a 30000 y mayores a 5000, pero al probar el código...funciona! Entonces, mi respuesta sería "el código funciona, no hay nada que arreglar en el código", sin embargo se dan respuestas multiple choice asumiendo que el código no funciona...lo cuál me genera dudas de que el ejercicio esté bien planteado y que las respuestas estén correctas. Ojalá algún tutor pueda ver este foro y ayudarnos a resolver estas dudas.