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

EJERCICIO

Este ejercicio no se resuelve con ninguna de las opciones ni con la dada como correcta. Esta consigna: "Personas con una cantidad de millas superior a 30,000 reciben un 20% de descuento" no requiere ninguna modificación: de 30.001 para arriba el programa les otorga el 20% de descuento. Entre 5001 y 30000, reciben un 10%. En el caso de tener 5000, lo más fácil era poner un >= y listo (de 5000 para arriba reciben 10%). para que se cumpla la consigna ''Personas con una cantidad de millas inferior a 5,000 no reciben descuento"

Dejo mi solución para que me corrijan:

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; alert("0") }

Gracias!

11 respuestas

concuerdo solo era agregar ">= "

El ejercicio menciona: "Personas con una cantidad de millas superior a 5,000, pero inferior a 30,000 reciben un 10% de descuento." pero nunca dice que desde los 5000 podemos acceder al descuento de 10% entonces no podriamos usar el operador >=

En mi caso lo solucione de la siguiente manera y jugando con el console.log o bien con alert para tener visibles los datos:

if (cantidadMillas > 5000 && cantidadMillas < 30000){
   alert (`Tu descuento es de ${porcentajeDescuento+10}`)
} else if (cantidadMillas > 30000){
    alert(`Tu descuento es de ${porcentajeDescuento+20}`)
}else{
   alert ('Tu descuento es 0')
}

podemos usar alert o console.log para ver el resultado en la pagina donde estamos desarrollando el juego. Solo comente el codigo del juego e ingrese el del problema porque aun no se como ejecutar un archivo.js jejeje pero a como tienen el codigo en el problema original pues no despliegan los datos de manera grafica para verlo asi que estaria de la siguiente manera

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

// en esta linea tenemos dos condiciones a cumplir si cantidad millas es mayor que 5000 y a su vez es menor que 30 000
if (cantidadMillas > 5000 && cantidadMillas < 30000){   
  (porcentajeDescuento=10)

// En esta linea declaramos que sea mayor de 30k    
} else if (cantidadMillas > 30000){
    (porcentajeDescuento=20)
    
    // por ultimo dejamos el cero asi garantizamos que cualquier condicion ajena a la declarada lo va tomar como cero
}else{
    ('Tu descuento es 0')
}

Que por cierto al final de ese ejercicio recomiendan agregar el console.log para ver que sucede en el codigo y pues lo piden para que veamos de alguna manera el resultado de la operacion de lo contrario no tenemos como ver el resultado.

Saludos si alguien encontro otro camino compartanlo :)

Yo agregué al final console.log(porcentajeDescuento) en el .js para que muestre lo que devuelve el algoritmo... Alejandro, para ejecutar el .js tenes que agregarlo en el archivo Html al final del body con el tag src.. Abajo te dejo la imagen.. Yo cree uno .js nuevo y lo agregue.. Despues se ejecuta ni bien cargas el html en algun navegador y con herramientas de desarrollador ver los console.log al costado... También creo que ninguna de las opciones que dan para elegir es correcta... Ingrese aquí la descripción de esta imagen para ayudar con la accesibilidad

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.

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

Hola, Alejandro! Me parece que en tu solución, 30.000 millas y 5.000 millas devuelven 0 de descuento. Por mi parte, asumí que los de 5000 millas reciben un 10% de descuento porque en las reglas del negocio se menciona que: "Personas con una cantidad de millas superior a 5,000, pero inferior a 30,000 reciben un 10% de descuento" y "Personas con una cantidad de millas inferior a 5,000 no reciben descuento". Luego, en los errores que dicen tener y que quieren que solucionemos, se aclara que: "Sin embargo, según los informes de los clientes, al intentar usar el descuento de 5,000 millas, no se aplica ningún descuento."

Para mí, está mal -o, al menos, confusamente- planteado el el ejercicio y la solución que brinda la plataforma. Yo asumí que entre 30.000 y 5.000 reciben 10%. De 30.001 para arriba, 20% y de 4999 para abajo, 0.

Sigamos debatiendo!

Saludos!

Estoy de acuerdo con la respuesta de María. Ninguna de las opciones era la indicada para lo que, para mi interpretación era el problema. Por último, yo también modificaría la parte final del código, retirando el else, que lo unico que hace es repetir que el valor de porcentajeDescuento es ''0'':

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

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

En sí, no entiendo que hay que solucionar en este ejercicio para mí el código que nos proporcionan está correcto y no me refiero a de las respuestas, el código:

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

sí está cumpliendo con las condiciones...

  • 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.

alguien me puede aclarar por favor, muchas gracias. Saludos a todos!! :)

Concuerdo incluso probé el código y no encuentro falla en las condiciones acordes al código, de hecho creo que las respuestas están mal, no se si se equivocaron y colocaron una de las respuestas como si fuera el código inicial, mientras el código erróneo esta como respuesta.

El código proporcionado no cumple para la cantidad = 5000 millas.

  • Personas con una cantidad de millas inferior a 5,000 no reciben descuento. <5000
  • Personas con una cantidad de millas superior a 5,000, pero inferior a 30,000 reciben un 10% de descuento. >5000 por ende la respuesta que si incluye cuando es = 5000 millas es la D.

según el texto las de 5000 millas están en un limbo no dice que merezcan descuento y tampoco dice que no merezcan descuento, los parámetros están para inferiores a 5000 y superiores a 5000, 5000 no tiene una regla establecida. por lo cual lo dejo en 0.

Yo concuerdo con Maria Eugenia, en realidad estan dando dos especificaciones que no concuerdan entre si porque excluyen del todo al 5000, por tanto el codigo tampoco le dara un descuento a esa cifra. Se deberia corregir tomando una de las condiciones como la unica, en este caso, la de que los clientes con cifras inferiores a las 5000 millas no reciben descuento, si estoy errado agradezco me corrijan.