-
Notifications
You must be signed in to change notification settings - Fork 96
/
CajeroAutomatico.php
51 lines (41 loc) · 1.21 KB
/
CajeroAutomatico.php
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
<?php
//Este archivo se encuentra en el siguiente directorio:
//C:\wamp\www\cajero\src\Clickbus\Bundle\CajeroBundle\Classes\CajeroAutomatico.php
namespace Clickbus\Bundle\CajeroBundle\Classes;
class NoteUnavailableException extends \Exception {
}
class InvalidArgumentException extends \Exception {
}
class CajeroAutomatico
{
private $billetes = array(10, 20, 50, 100);
private $retiro = array();
function __construct() {
rsort($this->billetes);
}
public function getbilletes($cantidad) {
$this->retiro = array();
$residuo = $cantidad;
if ($residuo < 0 || is_nan($residuo))
{
throw new InvalidArgumentException('La cantidad especificada no es válida.');
}
else
{
foreach($this->billetes AS $billete){
if ($residuo > 0) {
$division = floor($residuo / $billete);
$residuo = $residuo % $billete;
//echo "Billete: $billete, Division: $division, Residuo: $residuo<br/>";
if($division > 0)
$this->retiro[] = array('cantidad' => $division, 'denominacion' => $billete);
}
}
}
if ($residuo > 0 && $residuo < min($this->billetes)) {
throw new NoteUnavailableException('El cajero no puede pagar esta cantidad.');
}
else
return $this->retiro;
}
}