Die lösungen die ihr hier zeigt sind alle falsch... Sie gehen nicht darauf ein das anfangs von jedem schein klein zu groß jewals einer ausgegeben werden sollen.
edit: kann ein c# aber dashier sollte ansatzweise gehen,
es geht dabei um die gestellten Bedingungen:
Zitat
"Da der Kunde seinen Betrag nicht nur in großen Scheinen haben möchte, ist die Ausgabe wie folgt durchzuführen:
- Bei dem kleinsten Schein beginnend, sollte jeder Schein zunächst einmal ausgezahlt werden.
- Der Rest ist dann in möglichst großen Scheinen auszugeben.
#include <Windows.h>
#include <iostream>
int allowedBills[] = {5, 10, 20, 50, 100, 200, 500};
int auszahlen(int amount)
{
int gottenBills[7];
int amountNeeded=amount
for(int i = 0; i < 7; i++)
{
if(amountNeeded<allowedBills[i]) break;
gottenBills[i]++;
amountNeeded-=allowedBills[i];
}
for(int i = 6; i >= 0; i--)
{
while (amountNeeded>=allowedBills[i])
{
gottenBills[i]++;
amountNeeded-=allowedBills[i];
}
if(amountNeeded==0) break;
}
for(int i = 0; i < 7; i++)
{
if(gottenBills[i])
printf("Du hast %i. %i Euroscheine erhalten!\n", gottenBills[i], allowedBills[i]);
}
}
Alles anzeigen
Beispiel:
der Kunde Will 200€ Ausgezahlt haben:
200€ ist größer gleich 5.----> Ein Fünfer wird ausgezahlt
195€ ist größer gleich 10.--> Ein Zehner wird ausgezahlt
185€ ist größer gleich 20.--> Ein Zwanziger wird ausgezahlt
165€ ist größer gleich 50.--> Ein Fünziger wird Ausgezahlt
115€ ist größer gleich 100.->Ein Hunderter wird Ausgezahlt
15€ ist nicht größer gleich 200 -> Schleife wird beendet.
15€ ist nicht Größer gleich 500 -> nächster druchlauf
15€ ist nicht Größer gleich 200 -> nächster druchlauf
15€ ist nicht Größer gleich 100 -> nächster druchlauf
15€ ist nicht Größer gleich 50 -> nächster druchlauf
15€ ist nicht Größer gleich 20 -> nächster druchlauf
15€ ist größer gleich 10 -> Ein Zehner wird mehr ausgezahlt
5€ ist nicht Größer gleich 10 -> nächster druchlauf
5€ ist größer gleich 5 -> Ein Fünfer wird Ausgezahlt
Somit kommen nun:
2 x 5€
2 x 10€
1 x 20€
1 x 50€
1 x 100€
aus dem Automaten