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)
4
respuestas

[Duda] Duda

No comprendo el planteo y la resolución del ejercicio. El uso del condicional If dentro del condicional else como solución... Fue la última opción que elegí. Alguien podría explicármelo mejor por favor. Gracias!

4 respuestas

Tengo la misma duda si alguien puede aclarar por favor gracias

solución!

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.

Gracias justo estaba en el dilema sobre que error que querían que resolviéramos lo que si me gustaría si me pueden explicar por qué es mejor usar la condición if dentro del else no es más facil el else-if

Muchas gracias Cristian por tu tiempo y tu explicación detallada. Lo que me quedó resonando es por qué si el código funciona, aunque sea mejorable, los clientes tenían mayores descuentos de lo que les correspondian (los mayores a 30000 millas) y otros que reclamaban su descuento por 5000 millas no la recibían... Lo probaré con tu planteo. Gracias nuevamente!