Skip to content

Latest commit

 

History

History
52 lines (40 loc) · 1.79 KB

028-maquina.livemd

File metadata and controls

52 lines (40 loc) · 1.79 KB

28 - Máquina Expendedora

MÁQUINA EXPENDEDORA

Enunciado

Simula el funcionamiento de una máquina expendedora creando una operación que reciba dinero (array de monedas) y un número que indique la selección del producto.

  • El programa retornará el nombre del producto y un array con el dinero de vuelta (con el menor número de monedas).
  • Si el dinero es insuficiente o el número de producto no existe, deberá indicarse con un mensaje y retornar todas las monedas.
  • Si no hay dinero de vuelta, el array se retornará vacío.
  • Para que resulte más simple, trabajaremos en céntimos con monedas de 5, 10, 50, 100 y 200.
  • Debemos controlar que las monedas enviadas estén dentro de las soportadas.

Solución

defmodule VendingMachine do
  def comprar(dinero_ingresado, costo_producto) when is_integer(dinero_ingresado) and dinero_ingresado >= 0 and is_integer(costo_producto) and costo_producto >= 0 do
    if dinero_ingresado < costo_producto do
      {:error, "No tienes suficiente dinero para comprar este producto."}
    else
      {:ok, "Compra exitosa. Tu cambio es #{dinero_ingresado - costo_producto}."}
    end
  end
end

# Ejemplo de uso:
dinero_ingresado = 100  # Aquí ingresa la cantidad de dinero
costo_producto = 75    # Aquí ingresa el costo del producto

case VendingMachine.comprar(dinero_ingresado, costo_producto) do
  {:ok, mensaje} ->
    IO.puts(#{mensaje}")
  {:error, mensaje} ->
    IO.puts("Error: #{mensaje}")
end
¡Compra exitosa. Tu cambio es 25.