PHP - PHP Desglose en billetes y monedas

   
Vista:

PHP Desglose en billetes y monedas

Publicado por SILVIA (80 intervenciones) el 02/04/2015 11:55:52
Programa que calcule el desglose en billetes y monedas de una cantidad exacta de euros. Hay billetes de 500, 200, 100, 50, 20, 10 y 5 euros y monedas de 2, 1 euro, 50, 20, 10, 5 y 1 centimo. Por ejemplo, si deseamos conocer el desglose de 434.20 euros, el programa mostrará por pantalla el siguiente resultado: 2 billetes de 200 euros. 1 billete de 20 euros. 1 billete de 10 euros. 2 monedas de 2 euros. 1 moneda de 0.20 euros.";
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

PHP Desglose en billetes y monedas

Publicado por eyanez (31 intervenciones) el 02/04/2015 13:25:46
Lo puedes hacer procedimental, en forma recursiva, en una clase, etc.

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
<?php
function desglose($monto)  {
    $denominaciones = array(
        array('monto' => 500,  'tipo' => 'B'),
        array('monto' => 200,  'tipo' => 'B'),
        array('monto' => 100,  'tipo' => 'B'),
        array('monto' => 50,   'tipo' => 'B'),
        array('monto' => 20,   'tipo' => 'B'),
        array('monto' => 10,   'tipo' => 'B'),
        array('monto' => 5,    'tipo' => 'B'),
        array('monto' => 2,    'tipo' => 'M'),
        array('monto' => 1,    'tipo' => 'M'),
        array('monto' => 0.5,  'tipo' => 'M'),
        array('monto' => 0.20, 'tipo' => 'M'),
        array('monto' => 0.1,  'tipo' => 'M'),
        array('monto' => 0.05, 'tipo' => 'M'),
    );
 
 
    $desglose = array();
    foreach($denominaciones as $denominacion) {
        if($monto < $denominacion['monto']) {
            continue;
        }
 
        $cant   = (int) ($monto / $denominacion['monto']);
        $total  =  $cant * $denominacion['monto'];
        $monto  = $monto - $total;
 
        //array_push($desglose, array('cant' => $cant, 'monto' => $denominacion['monto'], 'total' => $total, 'tipo' => $denominacion['tipo'])); 
        $desglose[] = array('cant' => $cant, 'monto' => $denominacion['monto'], 'total' => $total, 'tipo' => $denominacion['tipo']);
    }
 
    return $desglose;
}
 
 
$denominaciones = desglose(432.311);
foreach($denominaciones as $denominacion) {
    echo $denominacion['cant'] . ' x ' . $denominacion['monto'] . ' ' . $denominacion['tipo'] . ' = ' . $denominacion['total'] . PHP_EOL;
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

PHP Desglose en billetes y monedas

Publicado por SILVIA (80 intervenciones) el 02/04/2015 15:17:18
¿Como lo haría sin funciones?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

PHP Desglose en billetes y monedas

Publicado por SILVIA (80 intervenciones) el 02/04/2015 21:42:12
Os adjunto mi solución porque me dá un error, haber si conseguis decirme como arreglarlo. Gracias de antemano.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$dinero=["Billetes" => [500, 200, 100, 50, 20, 10, 5], "monedas" => [2, 1]]; // Array con los posibles billetes y monedas
$cantidad=3034; // Cantidad que queremos desglosar
foreach ($dinero as $monedas_y_billetes => $euros) // Esta además asigna la clave del elemento actual a la variable $monedas_y_billetes en cada iteración
    foreach($euros as $euro) // Recorremos el array. En cada iteración, el valor del elemento actual se asigna a $euros y el puntero interno avanza una posición, (así  en la próxima iteración se estará observando el siguiente elemento) 
{
{
    if($cantidad>=$euro) // Si $cantidad es mayor o igual que $euro
    {
       echo "$monedas_y_billetes de $euro: ".floor($cantidad/$euro)."<br>"; // Mostramos por pantalla el resultado
        $cantidad=$cantidad%$euro;
        if(!$cantidad)
        break 2;
    }
}
}

Una pregunta: mi ejercicio cuando este solucionado el error ¿Funcionará también si le pongo decimales a $cantidad o como debería modificarlo para que lo haga?

Gracias de antemano por vuestra ayuda.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

PHP Desglose en billetes y monedas

Publicado por SILVIA (80 intervenciones) el 05/04/2015 23:39:22
Como sigo sin encontrar como solucionar este ejercicio, he intentado hacer el código de otro modo, pero no termina de hacerme el desglose correctamente y no entiendo porque ¿Podeis ayudarme? Es muy urgente. Gracias de antemano.

1
2
3
4
5
6
7
8
9
$dinero=array(500, 200, 100, 50, 20, 10, 5, 2);
$cantidad=2015; // Cantidad que queremos desglosar
foreach ($dinero as $monedas_y_billetes => $euros) // Se asigna la clave del elemento actual a la variable $monedas_y_billetes en cada iteración
    if($cantidad>=$euros) // Si $cantidad es mayor o igual que $euros
    {
        echo "<br>";
        echo "$monedas_y_billetes billetes de $euros "; // Mostramos por pantalla el resultado
        $dinero=$dinero%$euros;
}

Este nuevo código ¿Como lo mejoraría para poder cantidades con centimos?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Juan Carlos

PHP Desglose en billetes y monedas

Publicado por Juan Carlos (2 intervenciones) el 05/04/2015 23:42:50
Hola, voy a intentar ver donde esta el problema,
en una hora te comento si se pudo solucionar.

un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

PHP Desglose en billetes y monedas

Publicado por SILVIA (80 intervenciones) el 05/04/2015 23:46:37
Gracias por tu ayuda.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Juan Carlos

PHP Desglose en billetes y monedas

Publicado por Juan Carlos (2 intervenciones) el 06/04/2015 02:08:54
Hola, SI NECESITAS AYUDA EN PROGRAMACION, MATEMATCA AVANZADA,
ESTADISTICA, FISICA, ETC, este es mi correo: ciencia123@hotmail.com

Esta primera ayuda no tiene costo.


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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Documento sin título</title>
 
<?php
 
$euros = array
(
	array("500", 0),
	array("200", 0),
	array("100", 0),
	array("50", 0),
	array("20", 0),
	array("10", 0),
	array("5", 0),
	array("2", 0),
	array("1", 0),
);
 
$centimos = array
(
	array("50", 0),
	array("20", 0),
	array("10", 0),
	array("5", 0),
	array("1", 0)
);
 
$monto = 434.20;
 
echo "<br>  Cantidad a desglosar: ".$monto."<br><br>  Desglose:  <br>";
 
$cent = 100*($monto - (int)$monto);
$monto = intval($monto);
$j=0;
 
while($j < 9 && $monto > 0)
{
    if($euros[$j][0] > $monto)
      $j++;
 
	else
	{
		$euros[$j][1]++;
		$monto = $monto - $euros[$j][0];
    }
}
 
$j = 0;
while($j < 5 && $cent > 0)
{
    if($centimos[$j][0] > ($cent+1) )
       $j++;
	else
	{
	    $centimos[$j][1]++;
		$cent = round($cent - $centimos[$j][0]);
    }
}
 
for($j=0; $j<9; $j++)
{
	if($euros[$j][1] > 0)
	{
		echo $euros[$j][1];
		if($j < 7)
	  		echo " billete";
		else
	  		echo " moneda";
		if($euros[$j][1] > 1)
	   		echo "s";
		echo " de ".$euros[$j][0]." euros <br>";
	}
}
 
for($j=0; $j<5; $j++)
{
	if($centimos[$j][1] > 0)
	{
		echo $centimos[$j][1]. " moneda";
		if($centimos[$j][1] > 1)
	   		echo "s";
		echo " de ".$centimos[$j][0]." centimos de euro <br>";
	}
}
 
 
?>
</head>
 
<body>
</body>
</html>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve

PHP Desglose en billetes y monedas

Publicado por xve (5520 intervenciones) el 06/04/2015 11:19:45
Hola Silvia, aquí tienes un simple ejemplo, que permite billetes y monedas con decimales.

http://www.lawebdelprogramador.com/codigo/PHP/3123-Desglosar-un-importe-en-billetes-y-monedas.html

Espero que te sirva
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

PHP Desglose en billetes y monedas

Publicado por SILVIA (80 intervenciones) el 06/04/2015 15:11:38
Juan Carlos y Xve muchas gracias a los dos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar