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

El primer código está correcto

Esta mal hecho el ejercicio. Ya que recordemos que se ejecuta el código de arriba abajo, por lo cual es correcta esa estructura del primer código para evitar más condicionales innecesarios o comparaciones. incluso podríamos eliminar el “else” para que sea más eficiente.

Las respuestas solo hacen mas confusa la comprensión de la lección.

18 respuestas

concuerdo, añadi console.log(porcentajeDescuento) para ir visualizando y funciona correctamente el código. Tanto el primer código a "corregir" como el código "correcto" hacen exactamente lo mismo.

te referís al código original?

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

acabo de probar y si compila bien.

Así es Jose David, me refiero a ese primer código que es correcto. Aunque alguna solución sea correcta, solo se usaron mas recursos innecesarios y complicaron el ejercicio. Ojalá lo arreglen para que otras personas que van comenzando pueden comprender mejor las bases.

No no es correcto, 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.

Te equivocas Amaury. Porque como dije, si hace lo que debe de hacer el código original. No sé si hayas visto algoritmia. Si no has visto ese tema en la computación te sugiero que lo veas. Ahí se habla de que el código debe hacerse eficiente. Es decir que, si lo él algoritmo lo resuelve en 10 líneas, y se puede resolverse en 3 es una buena practica hacerlo. Ya que hay una complejidad algorítmica (costo computacional) que se calcula en base a las operaciones, estructuras de control, comparaciones, etc. Por lo cual es innecesario por ejemplo usar el código dado como respuesta. Lo correcto era haber hecho el código original que no funcionara por lo menos para que tuviera sentido su solución.

Si, pero el codigo no corresponde con las exigencias de la empresa, toda mi observacion se basa en los enunciados dados en el mismo problema, y dicho enunciados, tal como comente, entran en contradiccion con lo que hace su codigo, y todo se soluciona con >= y <=. Nada de agregar mas lineas de codigo innecesarias. Y el problema no solo es analizar eso codigo, en un caso hipotetico que trabajes en una empresa, haras las cosas como mas te convienen a ti o a la empresa? Un codigo con errores logicos no es eficiente.

Vuelvo y te dejo los enunciados originales, y si quieres prueba el codigo original y el de la solucion y veras todos los errores logicos que he planteado. Pero si, me he equivocado con lo de malas practicas de programacion, por que es un codigo sencillo y "casi" funcional tal como comentas.

Para ayudarte a comprender el origen del error tienes acceso a la documentación de las reglas de negocio utilizadas para las compras de paquetes de viaje con millas:

1-Personas con una cantidad de millas inferior a 5,000 no reciben descuento.

2-Personas con una cantidad de millas superior a 30,000 reciben un 20% de descuento.

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

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.

Por lo cual es innecesario por ejemplo usar el código dado como respuesta. Lo correcto era haber hecho el código original que no funcionara por lo menos para que tuviera sentido su solución.

Me puedes explicar el porque? Y que solucion hubieses dado tu?

Amaury, no subi el comentario como duda. Ya que se puede hacer a la hora de escribir en el foro. Si tu estas tranquilo con eso que dices adelante, ya te respondí el porque esta bien. Aqui mismo hay mas personas que comentarón y estan de acuerdo con lo que digo. Si no lo estas no es necesario venir a comentar, pero hay mas personas que tu que lo estan.

Tranquilo, no tienes que ponerte asi, solo hice una observacion, si ellos y tu estan de acuerdo esta bien, que yo tenga mi postura, tambien esta bien, el mundo no se acabara por un codigo.

Exactamente, entonces no es necesario tus obervaciones. Si se leer y entendi perfetamente las reglas del negocio. Te invito a que ejecutes el código y corrobores por ti mismo. Y ademas espero que alguien mas te instruya para que puedas observar que no es necesario hacerlo como dices, es mas inneficiente.

Entonces dices que es mas ineficiente simplemente hacer esto:

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; Quitar este else como dices, ya que es innecesario.
}****

¡Ineficientes las respuestas! Yo en todo momento dije que el primer código, o el código original era correcto y mas eficiente. Y si, se puede eliminar el ultimo else y hará lo mismo. Te invito a que uses el console.log como menciono el primer comentario para que corrobores.

No te quitare la razon si es mas eficiente, pero sigue siendo logicamente ineficiente, excluye a los de exactamente 5000 y a los exactamente 30,000 les pone 10% de descuento, te invito a que pongas el console.log y lo corrobores tu mismo. Y a esa peque;a observacion es a lo que me refiero. Que las respuestas dadas sen malas o mal planteadas es otra cosa, y incluso esas tienen el mismo problema.

Repito, te invitó a probar el código y leer bien las reglas del negocio.

Y te invito a leerlas nuevamente para que veas como se contradicen unas con otras................................

" Sus reglas entran en contradiccion constante o las enunciaron mal simplemente" No cubren todos los casos posibles.

Y pasa buenas noches, fue agradable tener esta conversacion contigo, si todo el mundo estuviera de acuerdo en todo entonces nunca se podria aprender, casos como este son una demostracion de eso.

Que te parece si estudiamos juntos por el grupo de discord?

Venga, claro que si. Pasame tu discord

flanguard#8099