Programación 1 Ingeniería de Sistemas: Ejercicios para aplicaciones en Java y su solución (Parte 2)

11. Se necesita desarrollar un programa que permita obtener el valor final de un automóvil, ingresando su valor base y sabiendo que se puede aplicar un descuento del 10% al valor base si el automóvil vale $20’000.000 o menos, 15% si el automóvil vale entre $20’000.000 y $30’000.000, y 20% si el automóvil vale más de $30’000.000. 

import java.text.DecimalFormat;
import javax.swing.JOptionPane;

public class Index {
    
    public static void main(String[] args){
        long precioCoche, descuento, total;
        int porcentajeDescuento = 0;
        
        DecimalFormat formatter = new DecimalFormat("#,###");
        
        precioCoche = Long.parseLong(JOptionPane.showInputDialog(null, "Ingrese el precio del carro: "));
        
        if(precioCoche <= 20000000.0){
            porcentajeDescuento = 10;
        }else if(precioCoche >= 20000000.0 && precioCoche <= 30000000.0){
            porcentajeDescuento = 15;
        }else if(precioCoche > 30000000.0){
            porcentajeDescuento = 20;
        }
        
        descuento = (precioCoche * porcentajeDescuento) / 100;
        
        JOptionPane.showMessageDialog(null, "Descuento de: $ " + formatter.format(descuento) + " COP. \nPrecio final del auto: $" + formatter.format(precioCoche - descuento)  + " COP");
    }
}

12. Elabore un programa para calcular e imprimir el precio de un terrero del cual se ingresan los siguientes datos: largo en metros, ancho en metros y precio por hectárea. Si el terrero tiene más de 50 hectáreas se puede hacer un descuento de 17%, si tiene más de 100 hectáreas el descuento es de 25%.

import java.text.DecimalFormat;
import javax.swing.JOptionPane;

public class Index {
    
    public static void main(String[] args){
        double largoMetros, anchoMetros, precioHectarea, areaTerreno, hectareas, precioTotal, descuento;
        int porcentajeDescuento = 0;
        
        DecimalFormat formatter = new DecimalFormat("#,###");
        
        largoMetros = Double.parseDouble(
            JOptionPane.showInputDialog(null, "Ingrese el largo del terreno en metros: ")
        );
        
        anchoMetros = Double.parseDouble(
            JOptionPane.showInputDialog(null, "Ingrese el ancho del terreno en metros: ")
        );
        
        precioHectarea = Double.parseDouble(
            JOptionPane.showInputDialog(null, "Ingrese el precio por hectarea: ")
        );
        
        areaTerreno = largoMetros * anchoMetros;
        hectareas = areaTerreno / 10000.0;
        
        precioTotal = hectareas * precioHectarea;
        
        if(hectareas >= 50 && hectareas <= 100){
            porcentajeDescuento = 17;
        }else if(hectareas > 100){
            porcentajeDescuento = 25;
        }
        
        descuento = (precioTotal * porcentajeDescuento) / 100;
        
        JOptionPane.showMessageDialog(
            null, 
            "Se aplico un descuento de: $"+ formatter.format(descuento) + "\n"
            + "El precio del terreno es de: $" + formatter.format(precioTotal - descuento)
        );
    }
}

13. Construya un programa tal, que, dados como datos la categoría del trabajador, el valor del día de trabajo del trabajador y el número de días trabajados, calcule el aumento correspondiente teniendo en cuenta la siguiente tabla. Imprima la categoría del trabajador y su nuevo sueldo.

CATEGORIA AUMENTO
1 15%
2 10%
3 8%
4 5%
import java.text.DecimalFormat;
import javax.swing.JOptionPane;

public class Index {
    
    public static void main(String[] args){
        double valorDiaTrabajo, salario, aumento;
        int diasTrabajados, categoria;
        int porcentajeAumento = 0;
        
        DecimalFormat formatter = new DecimalFormat("#,###");
        
        categoria = Integer.parseInt(
            JOptionPane.showInputDialog(null, "Ingrese la categoría del trabajados (1,2,3 o 4): ")
        );
        
        diasTrabajados = Integer.parseInt(
            JOptionPane.showInputDialog(null, "Ingrese el número de dias trabajados: ")
        );
        
        valorDiaTrabajo = Double.parseDouble(
            JOptionPane.showInputDialog(null, "Ingrese el salario por dia del trabajador: ")
        );
        
        switch(categoria){
            case 1:
                porcentajeAumento = 15;
                break;
            case 2:
                porcentajeAumento = 10;
                break;
            case 3:
                porcentajeAumento = 8;
                break;
            case 4:
                porcentajeAumento = 5;
                break;
        }
        
        salario = (diasTrabajados * valorDiaTrabajo);
        aumento = (salario * porcentajeAumento) / 100;
        
        JOptionPane.showMessageDialog(
            null, 
            "El salario del trabajador es de: $" + formatter.format(salario + aumento)
        );
    }
}

14. Una librería vende libros con las siguientes condiciones: Si el cliente es tipo 1 se le descuenta el 30%, si el cliente es de tipo 2 se le descuenta el 20%, si el cliente es tipo 3 se le descuenta el 10%. Cuando el cliente realiza una compra se registran los siguientes datos: Nombre del cliente, tipo de cliente, cantidad de libros y costo por libro (se considera que TODOS los libros son del mismo valor). Elabore un programa que lea estos datos e imprima nombre, total a pagar, descuento y neto a pagar.

import java.text.DecimalFormat;
import javax.swing.JOptionPane;

public class Index {
    
    public static void main(String[] args){
        String nombreCliente;
        double costoPorLibro, descuento, total;
        int tipoCliente, cantidadLibros, porcentajeDescuento;
        
        DecimalFormat formatter = new DecimalFormat("#,###");
        
        nombreCliente = JOptionPane.showInputDialog(null, "Ingrese el nombre del cliente: ");
        
        tipoCliente = Integer.parseInt(
            JOptionPane.showInputDialog(null, "Ingrese el tipo de cliente (1,2 o 3): ")
        );
        
        cantidadLibros = Integer.parseInt(
            JOptionPane.showInputDialog(null, "Ingrese el número de libros que se llevarán:")
        );
        
        costoPorLibro = Double.parseDouble(
            JOptionPane.showInputDialog(null, "Ingrese el precio por libro: ")
        );
        
        switch(tipoCliente){
            case 1:
                porcentajeDescuento = 30;
                break;
            case 2:
                porcentajeDescuento = 20;
                break;
            case 3:
                porcentajeDescuento = 10;
                break;
            default:
                porcentajeDescuento = 0;
                break;
        }
        
        total = (cantidadLibros * costoPorLibro);
        descuento = (total * porcentajeDescuento) / 100;
        
        JOptionPane.showMessageDialog(
            null, 
            "Factura a nombre de: " + nombreCliente + "\n"
            + "Tipo de cliente: " + tipoCliente + "\n"
            + "Total de libros: " + cantidadLibros + "\n"
            + "Costo por libro: $" + formatter.format(costoPorLibro) + "\n"
            + "Subtotal: $" + formatter.format(total) + "\n"
            + "Descuento: - $" + formatter.format(descuento) + "\n"
            + "Total a pagar: $" + formatter.format(total - descuento)
        );
    }
}

15. Realice un programa que determine el pago a realizar por la entrada a un espectáculo donde se pueden comprar sólo hasta cuatro entradas, donde si compra dos entradas se les descuenta el 10%, al comprar tres entradas el 15% y a la compra de cuatro entradas se le descuenta el 20 %. El valor de la entrada es de $ 60.000. Si el número de entradas es mayor a 4, el programa debe mostrar que se pueden comprar hasta 4 tiquetes máximo. Si el número de entradas es menor a 1, el programa debe mostrar que se debe comprar por lo menos 1 tiquete.

import java.text.DecimalFormat;
import javax.swing.JOptionPane;

public class Index {
    public static final double PRECIO_ENTRADA = 60000.0;
    
    public static void main(String[] args){
        double total, descuento;
        int porcentajeDescuento;
        int numeroEntradas = 0;
        boolean esValido = false;
        
        DecimalFormat formatter = new DecimalFormat("#,###");
        
        while(!esValido){
            numeroEntradas = Integer.parseInt(
                JOptionPane.showInputDialog(null, "Ingrese el número de tiquetes a comprar (minimo 1 y máximo 4 tiquetes):")
            );
            
            if(numeroEntradas >= 1 && numeroEntradas <= 4){
                esValido = true;
            }else{
                JOptionPane.showMessageDialog(
                    null, 
                    "El número de tiquetes que desea comprar es inválido, debe comprar como minimo 1 y máximo 4. Intente nuevamente", 
                    "Error", 
                    JOptionPane.ERROR_MESSAGE
                );
            }
        }
        
        switch(numeroEntradas){
            case 4:
                porcentajeDescuento = 20;
                break;
            case 3:
                porcentajeDescuento = 15;
                break;
            case 2:
                porcentajeDescuento = 10;
                break;
            default:
                porcentajeDescuento = 0;
                break;
        }
        
        total = numeroEntradas * PRECIO_ENTRADA;
        descuento = (total * porcentajeDescuento) / 100;
        
        JOptionPane.showMessageDialog(null, 
            "Entradas: " + numeroEntradas + "\n"
            + "Subtotal: $" + formatter.format(total) + "\n"
            + "Descuento: - $" + formatter.format(descuento) + "\n"
            + "Total a pagar: $" + formatter.format(total - descuento)
        );
        
    }
}

17. Se desea desarrollar un programa que, al introducir una cantidad de dinero expresado en pesos, indique cuántos billetes y monedas se puede tener como mínimo para completar este valor. La cantidad ingresada debe ser obligatoriamente múltiplo de $50, y se debe trabajar con denominaciones vigentes.

import javax.swing.JOptionPane;

public class Index {
    public static final double PRECIO_ENTRADA = 60000.0;
    
    public static void main(String[] args){
        int montoDinero = 0;
        boolean esValido = false;
        final int[] valor_denominaciones = new int[]{
            50000, 20000 , 10000 , 5000 , 2000 , 1000 , 500, 200 , 100 , 50
        };
        final String[] denominaciones = new String[]{
            "$50.000" , "$20.000" , "$10.000" , "$5.000" , "$2.000" , "$1.000" , "500" , "200" , "100" , "50"
        };
        
        while(!esValido){
            montoDinero = Integer.parseInt(JOptionPane.showInputDialog(null, "Ingrese la cantidad de dinero en pesos (multiplo de 50): "));
            
            if((montoDinero % 50) == 0){
                esValido = true;
            }else{
                JOptionPane.showMessageDialog(
                    null, 
                    "El número ingresado no es multiplo de 50, por favor ingrese nuevamente la cantidad", 
                    "Error", 
                    JOptionPane.ERROR_MESSAGE
                );
            }
        }

        int[] cantidad = new int[valor_denominaciones.length];

        String mensaje = "El valor de $" + montoDinero + " COP distribuido en diferentes valores: \n\n";
        
        for(int i = 0 ; i < cantidad.length ; i++){
            cantidad[i] = montoDinero / valor_denominaciones[i];
            montoDinero %= valor_denominaciones[i];

            if(cantidad[i] != 0){
                mensaje += cantidad[i] + " de " + denominaciones[i] + "\n";
            }
        }
        
        JOptionPane.showMessageDialog(null, mensaje);
    }
}

Esto podría ser de tu interes

Conviertete en un programador más sociable