Código de Java - Desglosar el cambio en billetes y monedas

Imágen de perfil
Val: 650
Bronce
Ha disminuido 1 puesto en Java (en relación al último mes)
Gráfica de Java

Desglosar el cambio en billetes y monedasgráfica de visualizaciones


Java

Publicado el 9 de Noviembre del 2016 por Xve (285 códigos)
27.833 visualizaciones desde el 9 de Noviembre del 2016
Este código muestra como desglosar un importe/cambio en billetes y monedas permitiendo utilizar decimales.

Ingresa el cambio a devolver:1856.97
Hay 3.0 billetes de: 500.0 Euros
Hay 1.0 billetes de: 200.0 Euros
Hay 1.0 billetes de: 100.0 Euros
Hay 1.0 billetes de: 50.0 Euros
Hay 1.0 billetes de: 5.0 Euros
Hay 1.0 monedas de: 1.0 Euros
Hay 1.0 monedas de: 0.5 Euros
Hay 2.0 monedas de: 0.2 Euros
Hay 1.0 monedas de: 0.05 Euros
Hay 1.0 monedas de: 0.02 Euros

Versión 1.0
estrellaestrellaestrellaestrellaestrella(9)

Actualizado el 15 de Noviembre del 2016 (Publicado el 9 de Noviembre del 2016)gráfica de visualizaciones de la versión: Versión 1.0
27.834 visualizaciones desde el 9 de Noviembre del 2016
estrellaestrellaestrellaestrellaestrella
estrellaestrellaestrellaestrella
estrellaestrellaestrella
estrellaestrella
estrella

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
import java.util.*;
 
public class Cambio {
 
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
 
        // variable que contendra el valor a devolver
        double importe=0;
        do{
            try{
                System.out.print("Ingresa el cambio a devolver:");
                importe=sc.nextDouble();
            }catch(Exception e){
                System.out.println("Introduciste un dato erroneo.");
                System.out.println("");
                sc.nextLine();
            }
        }
        while(importe<=0);
 
        calcular(importe);
    }
 
    public static void calcular(double importe)
    {
        // Indicamos todas las monedas posibles
        double [] monedas={500, 200, 100, 50, 20, 10, 5, 2, 1, 0.5, 0.20, 0.10, 0.05, 0.02, 0.01};
 
        // Creamos un array con 0 de longitud igual a la cantidad de monedas
        // Este array contendra las monedas a devolver
        double [] devolver={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
 
        // Recorremos todas las monedas
        for(int i=0;i<monedas.length;i++)
        {
            // Si el importe actual, es superior a la moneda
            if(importe>=monedas[i])
            {
                // obtenemos cantidad de monedas
                devolver[i]=Math.floor(importe/monedas[i]);
 
                // actualizamos el valor del importe que nos queda por didivir
                importe=importe-(devolver[i]*monedas[i]);
            }
        }
 
        // Bucle para mostrar el resultado
        for(int i=0;i<monedas.length;i++)
        {
            if(devolver[i]>0)
            {
                if(monedas[i]>2)
                {
                    // Indicamos que es un billete
                    System.out.println("Hay "+devolver[i]+" billetes de: "+monedas[i]+" Euros");
                }else{
                    // Indicamos que es una moneda
                    System.out.println("Hay "+devolver[i]+" monedas de: "+monedas[i]+" Euros");
                }
            }
        }
    }
 
}



Comentarios sobre la versión: Versión 1.0 (9)

Imágen de perfil
9 de Noviembre del 2016
estrellaestrellaestrellaestrellaestrella
No ha dejado ningún comentario
Responder
Angel
24 de Noviembre del 2016
estrellaestrellaestrellaestrellaestrella
Hola buenas! tengo una duda con el programa, en el caso de las monedas, si nos faltan monedas de 2 euros o 1 euro como haríamos para que siga dando el cambio cn prioridad a las monedas mas altas, es decir si sobran 2 euros y no tenemos esas monedas ( 1 € y 2€) y queremos que solo nos de de 50 centimos como mucho, como podemos hacerlo?
Responder
Imágen de perfil
24 de Noviembre del 2016
estrellaestrellaestrellaestrellaestrella
Hola Angel, si modificas el array, y quitas esas monedas, te funciona... algo así:
double [] monedas={500, 200, 100, 50, 20, 10, 5, 0.5, 0.20, 0.10, 0.05, 0.02, 0.01};

De esta manera, al hacer los cálculos y no disponer de monedas de 1 y 2 euros, utilizará las de 0.50 centimos
Responder
RodrigoHuertas
28 de Abril del 2017
estrellaestrellaestrellaestrellaestrella
hola querido amigo, tu código esta mal diseñado porque la función de elegir siempre la moneda mas alta no es lo mejor. Un ejemplo seria que añadiésemos las monedas,por ejemplo, de 0,12 céntimos:
2.24€ son 4 monedas según tu código(2+0.2+0.02+0.02) en cambio la función mas optima es (2+0.12+0.12) con 3 monedas.
Responder
rodrigo
28 de Diciembre del 2017
estrellaestrellaestrellaestrellaestrella
Ya pero te estas inventando la moneda de 12 cents por que no existe
Responder
Gabbi
25 de Octubre del 2017
estrellaestrellaestrellaestrellaestrella
Y si desease limitar la cantidad de billetes y monedas?
Responder
Angel
21 de Noviembre del 2017
estrellaestrellaestrellaestrellaestrella
¿Este mismo problema pero utilizando do while y switch?
Responder
Rafa
29 de Octubre del 2019
estrellaestrellaestrellaestrellaestrella
Me uno a la ultima petición del while y switch
Responder
Elias
1 de Julio del 2020
estrellaestrellaestrellaestrellaestrella
Funcional, lo que yo aumentaría sería tal vez un módulo de ordenamiento para el arreglo de monedas en caso de que sea un configuración dinámica.
Responder

Comentar la versión: Versión 1.0

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad

http://lwp-l.com/s3743