Hola!
Este ejercicio me parecio el mas complejo de los que han puesto hasta la fecha, pero no por las razones que me gustarian.
El problema esta bien planteado. Basicamente, y de manera resumida, el problema se puede abordar de la siguiente forma:
Si las millas son mayores a 30000 se aplica un descuento del 20% Si las millas son mayores a 5000 se aplica un descuento del 10% Si las millas son menores de 5000 no hay ningun descuento
Se nos pide encontrar un error en el codigo, sin embargo, el codigo que nos dan en el ejercicio no tiene ningun error (El codigo funciona correctamente).
Sin embargo, despues de analizar la respuesta correcta, llegue a la conclusion de que muchas partes del codigo pueden ser mejoradas.
La variable que almacena el descuento, es inicializada en 0, "let porcentajeDescuento = 0;"
El descuento de los usuarios que tienen menos de 5000 millas, tambien es 0, esto significa, que ya no es necesario alterar este valor para esos usuarios. Es decir, podemos eliminar la linea de "porcentajeDescuento = 0;" en el ejercicio.
if (cantidadMillas > 30000) {
porcentajeDescuento = 20;
} else if (cantidadMillas > 5000) {
porcentajeDescuento = 10;
} else {
porcentajeDescuento = 0; //Eliminamos esta linea, ya que no es necesaria
}
El eliminar esa linea, nos deja con un bloque "Else" vacio, por lo que de igual manera podemos eliminarlo, entonces el ejercicio nos quedaria de la siguiente forma:
if (cantidadMillas > 30000) { porcentajeDescuento = 20; } else if (cantidadMillas > 5000) { porcentajeDescuento = 10; }
Aunque no lo parezca, este codigo es identico al de la respuesta correcta, ya que funciona correctamente, sin embargo, podemos expresar el "ELSE IF" de la siguiente forma.
if (cantidadMillas > 30000) {
porcentajeDescuento = 20;
} else {
if (cantidadMillas > 5000) {
porcentajeDescuento = 10;
}
}
Y listo, expresando el IF dentro de un else, obtenemos la que es la respuesta correcta.
Un cambio que hacen en el ejercicio, es cambiar la igualacion de valores, por sumas, esto no genera ningun cambio, ya que a resultados practicos, es lo mismo.
Ejemplo:
Si tenemos declarada la variable porcentajeDescuento = 0; y despues, en un if colocamos porcentajeDescuento = 10; el valor final de la variable sera 10
Pero, si tenemos declarada la variable porcentajeDescuento = 0; y despues en un if colocamos porcentajeDescuento += 10; el valor final de la variable, de igual forma nos dara 10, pero esto, debido a que 0+10=10, si nosotros modificaramos la variable y la iniciaramos en 5, el resultado seria 15, ya que 5+10=15, utilizar sumas y no asignaciones, puede generar errores, y no se porque utilizaron esta manera en el ejercicio, aunque en este ejemplo, de igual forma funciona correctamente.