
Santiago Cujaban
PreguntaSin embargo, me he quedado estancado en el desafío de poder resetear el valor inicial de la cantidad de dinero que hay en la “caja”. Por ejemplo, si la cantidad total de la caja entre todos los billetes y sus respectivas cantidades me da 1065000$, cuando quiera retirar 100000$ el cajero tendrá que actualizar la cantidad total de la caja a 965000. ¿Cómo logro hacer eso 😦? Aquí abajo les dejo el código en HTML y JavaScript que tengo hasta ahora… Gracias por su atención! 😄 Espero que puedan ayudarme 😃
HTML:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Cajero automático</title> </head> <body> <h1>Bienvenido a tu Bank E! :D</h1> <p>Aquí podrás retirar tu dinero de <strong>tu cuenta bancaria :)</strong></p> <p> <img src="cajero.gif" /> </p> <h2>Por favor, ingresa la cantidad de dinero que quieres retirar en pesos colombianos:</h2> <p> <input type="number" id="dinero" /> <p> <input type="button" value="Extraer" id="extraer" /> <input type="button" value="Refrescar Cajero" onclick="javascript:window.location.reload();"/> </p> </p> <p id="resultado"></p> <script src="cajero.js"></script> </body> </html>
JavaScript:
// clase Billete class Billete { constructor(v, c) // método constructor con variables v, c { this.imagen = new Image(); this.valor = v; // instancia.valor es igual a la variable v del constructor this.cantidad = c; // instancia.cantidad es igual a la variable c del constructor this.imagen.src = imagenes[this.valor]; } } var imagenes = []; imagenes["100000"] = "100mil.jpg"; imagenes["50000"] = "50mil.jpg"; imagenes["20000"] = "20mil.jpg"; imagenes["10000"] = "10mil.jpg"; imagenes["5000"] = "5mil.jpg"; imagenes["2000"] = "2mil.jpg"; imagenes["1000"] = "1mil.jpg"; var caja = []; caja.push( new Billete(100000, 5) ); caja.push( new Billete(50000, 5) ); caja.push( new Billete(20000, 5) ); caja.push( new Billete(10000, 10) ); caja.push( new Billete(5000, 15) ); caja.push( new Billete(2000, 15) ); caja.push( new Billete(1000, 10) ); existencia(); var entregado = []; var dinero; var div; var papeles; var resultado = document.getElementById("resultado"); var b = document.getElementById("extraer"); b.addEventListener("click", entregarDinero); function entregarDinero() { var t = document.getElementById("dinero"); dinero = parseInt(t.value); for(var b of caja) { if(dinero > 0) { div = Math.floor(dinero / b.valor); if(div > b.cantidad) { papeles = b.cantidad; } else { papeles = div; } entregado.push( new Billete(b.valor, papeles) ); dinero -= (b.valor * papeles); } } if(dinero > 0) { resultado.innerHTML = "Soy un cajero <strong>malo</strong>, he sido <strong>malo</strong> y no puedo darte esa cantidad :( <br /><hr />"; } else { resultado.innerHTML += "<p>Retiraste:<br /></p>"; for(var e of entregado) { if(e.cantidad > 0) { for(var bi = 1; bi <= e.cantidad ;bi++) { resultado.innerHTML += "<img src=" + e.imagen.src + " />" + "<br /><hr />"; } } } } existencia(); } // Aquí abajo tengo el supuesto contador, pero la verdad es que solo me muestra la cantidad total al inicio de la caja, pero no me muestra la cantidad total luego de retirar cierta cantidad de dinero function existencia() { var total = 0; for(var bi of caja) { total = total + bi.valor * bi.cantidad; } console.log(total); }

Federico Matías Mauro
Lo que tendrías que hacer para que se actualize la cantidad de dinero es que cuando se retire por ejemplo un billete de 10 eliminarlo del array caja para que cuando lo cuente ya detecte que faltan billetes y muestre la cantidad correcta.