C# :: Aufgabe #260 :: Lösung #2

3 Lösungen Lösungen öffentlich
#260

Begleichung einer Rechnung ausschließlich mit Münzen

Anfänger - C# von hollst - 02.05.2019 um 15:46 Uhr
Angenommen, ihr hättet an der Kasse einen Betrag X zwischen (einschließlich) einem Cent und einem Euro zu bezahlen.

Schreibe ein Program, dass die Anzahl der Möglichkeiten berechnet, X ausschließlich mit 1, 2, 5 und 10 Cent-Münzen zu begleichen.

Beispiel: X = 5 Cent -> 4 Möglichkeiten (5; 2 + 2 + 1; 2 + 1 + 1+ 1; 1 + 1 + 1 + 1 + 1)

Achtung: für einen EURO (100 Cent) gibt es bereits 2.156 Möglichkeiten!

Viel Spaß!
#2
vote_ok
von daniel59 (4260 Punkte) - 23.07.2019 um 12:02 Uhr
Quellcode ausblenden C#-Code
using System;

namespace ConsoleBegleichungRechnungMuenzen
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("----- Begleichung einer Rechnung ausschließlich mit Münzen -----");

            do
            {
                Console.Write("Betrag in cent: ");
                int betrag;
                if (int.TryParse(Console.ReadLine(), out betrag))
                {
                    int p = GetPossibilities(betrag);
                    
                    Console.WriteLine("Es wurden {0} Möglichkeiten gefunden.", p);
                }
                else
                {
                    break;
                }
            } while (true);
            Console.ReadLine();
        }

        static int GetPossibilities(int betrag)
        {
            int current10 = 0;
            int current5 = 0;
            int current2 = 0;
            int current1 = 0;
            int counter = 0;
            for (int i10 = 0; i10 <= betrag / 10; i10++)
            {
                current10 = i10 * 10;
                for (int i5 = 0; i5 <= (betrag - current10) / 5; i5++)
                {
                    current5 = current10 + i5 * 5;
                    for (int i2 = 0; i2 <= (betrag - current5) / 2; i2++)
                    {
                        current2 = current5 + i2 * 2;
                        for (int i1 = 0; i1 <= (betrag - current2); i1++)
                        {
                            current1 = current2 + i1;
                            if (current1 == betrag)
                            {
                                counter++;
                            }
                        }
                    }
                }
            }

            return counter;
        }
    }
}

Kommentare:

Für diese Lösung gibt es noch keinen Kommentar

Bitte melden Sie sich an um eine Kommentar zu schreiben.
Kommentar schreiben