Lösung der Aufgabe 4-6:

Geldbeträge in Geldscheine und Münzen zerlegen.
Liste der Geldscheine und Münzen(Euro): 500, 200, 100, 50, 20, 10, 5, 2, 1, 0.5, 0.2, 0.1, 0.05, 0.02, 0.01

Entwurf:

Die verfügbaren Geldwerte (Geldscheine und Münzen) werden in einem Vektor gespeichert. Weil der Algorithmus die Ganzzahldivision vorteilhaft nützen kann, geben wir zunächst alle Geldwerte in Cent an.

geldwert[0] = 50000
geldwert[1] = 20000
....
geldwert[14] = 1

In einem zweiten Vektor anzahl[i] werden die Resultate der Berechnungen gespeichert, d.h. wieviele Scheine oder Münzen dieses Typs für den Geldbetrag gebraucht werden. Das Prinzip der Rechnung ist:

Betrag durch geldschein[0] dividieren --> anzahl[0]
Den Betrag um anzahl[0]*geldwertn[0] verringern
Betrag durch geldschein[1] dividieren --> anzahl[1]
Den Betrag um anzahl[1]*geldwert[1] verringern
Diese Rechnung wird wiederholt, bis der Betrag 0 wird.

Pseudocode:

i = 0;
Wiederhole
  anzahl[i] = Betrag / geldwert[i]
  Betrag = Betrag - anzahl[i] * geldwert[i]
  i um 1 erhöhen
solange der Betrag > 0 ist
Liste der Scheine ausgeben

Das Beispiel ist gut geeignet um einige Programmiertechniken zu verwenden, die hier schrittweise entwickelt werden. Eine erste, nicht ganz vollständige Lösung ist, die Aufgabe für einen Geldbetrag zu lösen. Das Beispiel ist für Euro und Cent Geldbeträge gelöst, die als Dezimalzahl mit zwei Nachkommastellen für die Cent eingegeben werden. Diese Eingabe wird mit 100 multipliziert, sodass sich ganze Beträge in Cent ergeben. Bei der Ausgabe werden dann wieder Euro und Cent angegeben.

Lösung 1: Nur ein Geldbetrag, nur eine Funktion main.

Die zweite Lösung hat die Zerlegung für einen Betrag in eine Funktion ausgelagert.

Lösung 2: Nur ein Geldbetrag, eine Funktion zur Berechung der Geldschein- und Münzliste

Die dritte Lösung erlaubt die Eingabe von mehreren Geldbeträgen. Die Liste wird wie in der Aufgabenstellung vorgegeben, zuerst als Textdatei erzeugt. Am Ende des Programms, wird die Liste wieder gelelsen und am Bildschirm ausgegeben.

Lösung 3: Mehrere Geldbeträge, Verwendung einer temporären Zwischendatei.

Im Programmtext wird für die Variablenbezeichner die ungarische Namenskonvention verwendet, die vor allem in der Windows-Programmierung verwendet wird. Das Prinzip dieser Konvention, ist dass jeder Variablenname mit einem Präfix beginnt, das den Typ der Variablen angibt. Nach dem Präfix beginnt der eigentliche Name dann mit einem Großbuchstaben.

Präfixe für Datentypen:

a Array (Vektor)
ch char
dw unsigned long (double word)
i Index (allgemein)
n integer
f float
d double
sz Zeichenkette
lpsz Zeiger auf Zeichenkette (long pointer)

Wenn also der Vektor der Geldwerte mit anGeldwerte bezeichnet wird, dann steckt in dem Namen die Information dass es sich um einen Vektor (array) von int-Werten handelt.