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

[Duda] Otra forma de resolverlo: Cálculo del valor con descuento

A partir de mi experiencia en el challenge encripador, en donde utilice un bucle for y un switch case para poder reemplazar las letras, varios amigos que ya poseen conocimientos en programacion me preguntaron porque usaba ese formato para resolver el problema de encriptacion y porque no usaba un array o un diccionario, donde los ultimos dos me simplificarian el codigo en gran medida. Al ver que tenían razón, en cada ejercicio de programación que hago, trato de preguntarme: es posible resolver mi problema de otra manera? si es asi, cambio mi código, aun estoy muy verde en el tema de manejo de arreglos, si alguien ve alguna mala practica en la declaración de variables, por favor me avisa. Nota: el IDE de NetBeans me pidio que inicialice la variable en cero --> double valorFinalCompra = 0; Porque lo hizo si le do un valor dentro del if?

public class ejercicioOpcional {
    public static void main(String[] args) {
        double valorCompra = 350.0;        
        double[] descuento = {1,0.9,0.85,0.8};
        double[] monto = {0,100,200,300};
        double valorFinalCompra = 0;

        for (int i = 0; i < monto.length; i++) {
            if(valorCompra >= monto[i]){
                valorFinalCompra = valorCompra * descuento[i];
            }
        }
        System.out.println("El Valor final de la compra es: $" + valorFinalCompra);
    }
}

Nota: el IDE de NetBeans me pidio que inicialice la variable en cero --> double valorFinalCompra = 0; Porque lo hizo si le do un valor dentro del if?

3 respuestas

Es muy bueno lo que pensaste, lo resolviste con menos lineas de código que el instructor. Igualmente creo que el video esta hecho para practicar if y else. Pero se nota que estas entendiendo lo que haces.

public class Descuento {

public static void main(String[] args) {

    double valorCompra = 350.0;
    double valorFinal;
    String mensajeDescuento;

    mensajeDescuento = (valorCompra >= 100 && valorCompra <= 199.99) ? "Descuento del 10%" :
                      (valorCompra >= 200 && valorCompra <= 299.99) ? "Descuento del 15%" :
                      "Descuento del 20%";

    valorFinal = (valorCompra >= 100 && valorCompra <= 199.99) ? valorCompra - (valorCompra * (10.0 / 100)) :
                 (valorCompra >= 200 && valorCompra <= 299.99) ? valorCompra - (valorCompra * (15.0 / 100)) :
                 valorCompra - (valorCompra * (20.0 / 100));

    System.out.println(mensajeDescuento);
    System.out.println("Valor final: $" + valorFinal);
}
}

yo lo hice de esta forma tratando de sitetizar el programa con un or pero no se si sea correcto o que otra formas se puedan hacer

ublic class programa_descuentos_version2 {

public static void main(String[] args) {


     double costo= 999.90;
     double descuento= 0.0;
     boolean cantidad = (costo>=100.00 && costo <200 || costo>=200.00 && costo <299.99||costo >=  300.00);



     if(cantidad) {

     }
         if(costo>=100.00 && costo <200) {
             descuento=10.0;     
         }

         else if(costo>=200.00 && costo <299.99){
              descuento=15.0;
         }

         else if(costo >=  300.00) {

             descuento=20.00;


     }

     double costoreal = costo - (costo*(descuento/100));

     System.out.println("Valor de la compra: $" + costo);
     System.out.println("Descuento: " + descuento + "%");
     System.out.println("Valor final: $" + costoreal);     

     }

}