Programa En C# Para Calcular El Cambio Usando Las Monedas Y Billetes Más Grandes Posibles

Este programa en C# está diseñado para calcular el cambio que un cliente debería recibir tras una compra. Se asume que la tienda dispone de una cantidad ilimitada de monedas y billetes, incluyendo denominaciones de 100, 50, 20, 10, 5, 2 y 1 unidad. El programa solicitará el precio del artículo comprado y el importe pagado por el cliente, y luego calculará el cambio utilizando primero las denominaciones más altas posibles.

El programa funciona encontrando la denominación más alta que sea menor o igual al cambio restante y restándola hasta que el cambio se distribuya por completo. Garantiza que se entregue la menor cantidad de monedas y billetes como cambio, lo cual es eficiente y práctico. Por ejemplo, si el precio es 44 y el cliente paga 100, el programa proporcionará 50, 5 y 1 como cambio.



Grupo

Conceptos básicos control de flujo en C#

Objectivo

Escriba un programa en C# para dar el cambio de una compra, usando las monedas (o billetes) de mayor valor posible. Supongamos que tenemos una cantidad ilimitada de monedas (o billetes) de 100, 50, 20, 10, 5, 2 y 1, y no hay decimales.

Ejemplo de ejercicio en C#

 Copiar código C#
using System;

class Program
{
    static void Main()
    {
        // Ask for the price of the item
        Console.Write("Price? ");
        int price = int.Parse(Console.ReadLine()); // Read the price from the user
        
        // Ask for the amount paid by the customer
        Console.Write("Paid? ");
        int paid = int.Parse(Console.ReadLine()); // Read the amount paid from the user

        // Calculate the change to be given
        int change = paid - price; 
        
        // Check if the amount paid is less than the price
        if (change < 0)
        {
            Console.WriteLine("Not enough money paid!");
            return;
        }

        // Output the total change
        Console.WriteLine($"Your change is {change}:");

        // List of coin/bill denominations in descending order
        int[] denominations = { 100, 50, 20, 10, 5, 2, 1 };

        // Loop through each denomination and determine how many times it can be used
        foreach (int denomination in denominations)
        {
            while (change >= denomination)
            {
                Console.Write(denomination + " "); // Print the denomination
                change -= denomination; // Subtract the denomination value from the remaining change
            }
        }
        
        Console.WriteLine(); // Move to the next line after printing all denominations
    }
}

 Output

//Example 1:
Price? 44
Paid? 100
Your change is 56:
50 5 1 

//Example 2:
Price? 1
Paid? 100
Your change is 99:
50 20 20 5 2 2

//Example 3 (Edge Case):
Price? 60
Paid? 100
Your change is 40:
20 20

//Example 4 (Error Case):
Price? 200
Paid? 100
Not enough money paid!

Comparte este ejercicio de C#

Practica más ejercicios C# de Conceptos básicos control de flujo en C#

¡Explora nuestro conjunto de ejercicios de práctica de C#! Diseñados específicamente para principiantes, estos ejercicios te ayudarán a desarrollar una sólida comprensión de los fundamentos de C#. Desde variables y tipos de datos hasta estructuras de control y funciones simples, cada ejercicio está diseñado para desafiarte gradualmente a medida que adquieres confianza en la programación en C#..