Cambios de una máquina

[aux_code language=»javascript» theme=»tomorrow» title=»Cambios de una máquina» extra_classes=»»]
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {

    public static void main(String[] args) {

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        int p;
        String entrada;
        do {
            try {
                System.out.println("Introduzca el precio (con sus decimales, se permite multiplos de 5 sin decimales):");
                entrada = br.readLine();
                // controlar que el precio sea multiplo de 5 por string ya que no funciona %5 y debe ser multiplo o las vueltas son estafadas
                if (entrada.substring(entrada.length() - 1, entrada.length()).equals("0") || entrada.substring(entrada.length() - 1, entrada.length()).equals("5")) {
                    p = (int) (Double.parseDouble(entrada) * 100);
                    int a = 0;
                    do {
                        System.out.println("Introduzca las monedas con sus decimales:");
                        // No se controla monedas ANORMALES como 0.35, entiendo que el usuario ha introducido una de 0.20 + 0.10 + 0.05
                        //ya que para controlar las monedas existentes reales tendría que añadir una parrafada de if o switch al no poder usar array
                        entrada = br.readLine();
                        int pa = (int) (Double.parseDouble(entrada) * 100);
                        if (pa <= 200 && pa >= 5) {
                            if (entrada.substring(entrada.length() - 1, entrada.length()).equals("0") || entrada.substring(entrada.length() - 1, entrada.length()).equals("5")) {
                                a += pa;
                            } else {
                                System.out.println("Moneda no válida, sólo se admiten monedas múltiplos de 5");
                            }
                        } else {
                            System.out.println("Moneda no válida, sólo se admiten monedas de 0.05 a 2.00 euros");
                        }
                    } while (p > a);
                    if (p != a) {
                        a = a - p;
                        int c = 0;
                        // incorporo posibilidad de 2€ por si las moscas
                        while (a >= 200) {
                            a -= 200;
                            c++;
                        }
                        if (c != 0) {
                            System.out.println("Devolver " + c + " moneda(s) de 2.00€");
                        }

                        c = 0;
                        while (a >= 100) {
                            a -= 100;
                            c++;
                        }
                        if (c != 0) {
                            System.out.println("Devolver " + c + " moneda(s) de 1.00€");
                        }

                        c = 0;
                        while (a >= 50) {
                            a -= 50;
                            c++;
                        }
                        if (c != 0) {
                            System.out.println("Devolver " + c + " moneda(s) de 0.50€");
                        }

                        c = 0;
                        while (a >= 20) {
                            a -= 20;
                            c++;
                        }
                        if (c != 0) {
                            System.out.println("Devolver " + c + " moneda(s) de 0.20€");
                        }

                        c = 0;
                        while (a >= 10) {
                            a -= 10;
                            c++;
                        }
                        if (c != 0) {
                            System.out.println("Devolver " + c + " moneda(s) de 0.10€");
                        }

                        c = 0;
                        while (a >= 5) {
                            a -= 5;
                            c++;
                        }
                        if (c != 0) {
                            System.out.println("Devolver " + c + " moneda(s) de 0.05€");
                        }
                    }
                    System.out.println("Gracias por su compra.");
                } else {
                    p = 0;
                    System.out.println("El valor ha de ser múltiplo de 5.");
                }
            } catch (IOException e) {
                p = 0;
                System.out.println("El valor ha de ser numérico.");
            }
        } while (p == 0);
    }
}

here[/aux_code]

Etiquetas: Sin etiquetas

Añadir un comentario

Debes estar conectado para publicar un comentario