Hoy vamos a resolver un ejercicio de JavaScript. Se trata de un programa para convertir un número en monedas y billetes de distinta denominación. El mismo dice así:
Escribe una función de JavaScript para convertir una cantidad X de dinero en monedas o billetes. A la función se le deben pasar los valores de las monedas y billetes en las que queremos cambiar mediante un array
Veamos un ejemplo…
Entrada:
Salida: 25, 10, 10, 1
Básicamente sirve para saber cuántas monedas y billetes vas a usar si vas a dar una determinada cantidad de dinero.
Por ejemplo, supongamos que solo existen billetes de 20, 50 y 100 pesos. Si tuviera que dar 290 pesos daría 2 billetes de 100, 1 de 50 y 2 de 20.
Nota: aquí se prefiere dar primero los billetes o monedas más grandes.
Al ejecutar esto en el programa de JavaScript, la salida es: 100, 100, 50, 20, 20
Lo cual es correcto.
Primero ordenamos el arreglo de las denominaciones disponibles para que quede ordenado de mayor a menor. Ahora nos enfocamos en la cantidad de dinero.
Recorremos las denominaciones disponibles y mientras la cantidad de dinero sea mayor o igual a la denominación actual, vamos a colocar esa denominación en una lista e ir restándola de la cantidad de dinero.
Al final vamos a terminar de recorrer todas las monedas y por lo tanto la cantidad de dinero llegará a 0. Finalmente regresamos las denominaciones usadas, mismas que tendrán los billetes y monedas que vamos a usar.
Nota: debemos garantizar que las denominaciones sean las suficientes para dar cualquier cantidad de dinero, pues si no, podríamos caer en un ciclo infinito.
Entonces el código queda como se ve a continuación. He encerrado todo el comportamiento en una función:
const dineroAMonedas = (cantidad, monedas) => {
/*
https://parzibyte.me/blog
*/ // Primero ordenamos las monedas de mayor a menor:
// https://parzibyte.me/blog/2018/10/28/ordenar-arreglos-javascript-sort/#Ordenar_arreglo_de_enteros_ascendente
monedas.sort((unNumero, otroNumero) => otroNumero - unNumero);
const monedasUsadas = [];
for (const moneda of monedas) {
while (cantidad >= moneda) {
monedasUsadas.push(moneda);
cantidad -= moneda;
}
}
return monedasUsadas;
};
Primero ordenamos las denominaciones (billetes y monedas) en la línea 7. Luego declaramos la lista de las monedas y billetes que vamos a usar en la línea 8.
Recorremos las denominaciones en la línea 9, y mientras la cantidad sea mayor o igual que la denominación actual, la agregamos a las monedas usadas con push (línea 11) además de restar esa denominación de la cantidad.
Finalmente regresamos las monedas y billetes usados en la línea 15. Todo esto programando con JavaScript.
Finalmente veamos el modo de uso para ver el código completo. Queda como se ve a continuación:
const dineroAMonedas = (cantidad, monedas) => {
/*
https://parzibyte.me/blog
*/ // Primero ordenamos las monedas de mayor a menor:
// https://parzibyte.me/blog/2018/10/28/ordenar-arreglos-javascript-sort/#Ordenar_arreglo_de_enteros_ascendente
monedas.sort((unNumero, otroNumero) => otroNumero - unNumero);
const monedasUsadas = [];
for (const moneda of monedas) {
while (cantidad >= moneda) {
monedasUsadas.push(moneda);
cantidad -= moneda;
}
}
return monedasUsadas;
};
const cantidad = 290;
const billetes = [100, 50, 20];
const monedasYBilletes = dineroAMonedas(cantidad, billetes);
console.log("Dada la cantidad %f y los billetes %s, pueden representarse con: %s", cantidad, billetes, monedasYBilletes);
Al momento de ejecutarlo la salida es correcta, es el ejemplo que usé al inicio:
Recuerda que como estamos programando en JavaScript esto puede correr en el servidor o en el cliente.
Para terminar te dejo con más tutoriales de JavaScript en mi blog.
El día de hoy te mostraré cómo crear un servidor HTTP (servidor web) en Android…
En este post te voy a enseñar a designar una carpeta para imprimir todos los…
En este artículo te voy a enseñar la guía para imprimir en una impresora térmica…
Hoy te voy a mostrar un ejemplo de programación para agregar un módulo de tasa…
Los usuarios del plugin para impresoras térmicas pueden contratar licencias, y en ocasiones me han…
Hoy voy a enseñarte cómo imprimir el € en una impresora térmica. Vamos a ver…
Esta web usa cookies.