JavaScript - Convertir cantidad de dinero a monedas y billetes de distinta denominación

JavaScript: convertir dinero a monedas y billetes

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

Convirtiendo dinero a monedas y billetes

Veamos un ejemplo…

Entrada:

  • Número: 46
  • Denominaciones disponibles: 25, 10, 5, 2, 1

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.

Explicación del algoritmo

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.

Convertir dinero a monedas y billetes con JS

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.

Modo de uso

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:

JavaScript - Convertir cantidad de dinero a monedas y billetes de distinta denominación
JavaScript – Convertir cantidad de dinero a monedas y billetes de distinta denominación

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.

Estoy aquí para ayudarte 🤝💻


Estoy aquí para ayudarte en todo lo que necesites. Si requieres alguna modificación en lo presentado en este post, deseas asistencia con tu tarea, proyecto o precisas desarrollar un software a medida, no dudes en contactarme. Estoy comprometido a brindarte el apoyo necesario para que logres tus objetivos. Mi correo es parzibyte(arroba)gmail.com, estoy como@parzibyte en Telegram o en mi página de contacto

No te pierdas ninguno de mis posts 🚀🔔

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.

Dejar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *