Python Geldbetrag Umwandler?

3 Antworten

Achja, schöne Übungaufgabe für einen Greedyalgorithmus.

Beobachtung: Jeder nächstkleinere Geldwert ist <= 1/2 des größeren.

Hieraus ergibt sich zwingend, daß ich jeweils den größten Gelwerte <= dem aktuellen nutze, bis es nicht mehr geht, danach wechsle wich auf den Folgebetrag, der wieder in die Restsumme passt.

Destranix hat Dit sogar Pseudocode für Deine Übungsaufgabe geliefert, habe es nur überflogen, sieht soweit richtig aus, allerdings etwas umständlich, ich würde über die Gelwerte iterieren und das wars auch schon. Eine Funktion wie divmod() ist praktisch.

Aber du willst es ja mit möglichst wenigen scheinen und Münzen ausgeben, oder? Dann würde das Programm ja bei 500€ einen 500€ Schein ausgeben, oder nicht?

Woher ich das weiß:Studium / Ausbildung – Informatikstudent

Cruxial 
Beitragsersteller
 19.10.2019, 15:07

Exakt aber auch 0 mal 200€, 0 mal 100€, 0 mal 50€ und so weiter bis 0 mal 1 Cent

0

Das funktioniert beim Euro glücklicherweise mit einem sogenannten gierigen Algorithmus.

Du wählst immer den größten Schein/die größte Münze, die kleiner gelich dem noch auszuzahlendem Geldbetrag ist. Diese fügst du der Ausgabemenge hinzu und ziehst den Wert vom noch auszuzahlendem Geldbetrag ab.

Das widerholst du, bis der noch auszuzahlende Geldbetrag = 0 ist.


Destranix  19.10.2019, 15:08

Pseudocode:

int[] Münzwerte = {50000, 20000, 10000, 5000, 2000, 1000, 500, 200, 100, 50, 20, 10, 5, 2, 1};//Münzwerte in ct
int auszuzahlenderBetrag;//Extren bereitgestellt
int[] ausgabemenge;
while(auszuzahlenderBetrag != 0){
   for(int i=0;i<Münzwerte.length;++i){
      if(Münzwerte[i]>=auszuzahlenderBetrag){
         ausgabemenge.push(Münzwerte[i]);
         auszuzahlenderBetrag -= Münzwerte[i];
         break;
      }
   }
}
0