restructure and add ipi texs
This commit is contained in:
@@ -0,0 +1,55 @@
|
||||
#include "fcpp.hh"
|
||||
|
||||
int nennwert (int nr) {// Muenzart -> Muenzwert
|
||||
if (nr==1) return 1; if (nr==2) return 2;
|
||||
if (nr==3) return 5; if (nr==4) return 10;
|
||||
if (nr==5) return 50;
|
||||
return 0;
|
||||
}
|
||||
|
||||
struct Arg { // Stapelelemente
|
||||
int betrag; // das sind die Argumente der
|
||||
int muenzarten; };// rekursiven Variante
|
||||
|
||||
const int N = 1000; // Stapelgroesse
|
||||
|
||||
int wechselgeld2 (int betrag) {
|
||||
Arg stapel[N]; // hier ist der Stapel
|
||||
int i=0; // der "stack pointer"
|
||||
int anzahl=0; // das Ergebnis
|
||||
int b,m; // Hilfsvariablen in Schleife
|
||||
|
||||
stapel[i].betrag = betrag; // initialisiere St.
|
||||
stapel[i].muenzarten = 5; // Startwert
|
||||
i = i+1; // ein Element mehr
|
||||
|
||||
while (i>0) { // Solange Stapel nicht leer
|
||||
i = i-1; // lese oberstes Element
|
||||
b = stapel[i].betrag;// lese Argumente
|
||||
m = stapel[i].muenzarten;
|
||||
|
||||
if ( b==0 )
|
||||
anzahl = anzahl+1; // Moeglichkeit gefunden
|
||||
else if ( b>0 && m>0 ) {
|
||||
if (i>=N) {
|
||||
print("Stapel zu klein");
|
||||
return anzahl;
|
||||
}
|
||||
stapel[i].betrag = b; // Betrag b
|
||||
stapel[i].muenzarten = m-1;// mit m-1 Muenzarten
|
||||
i = i+1;
|
||||
|
||||
if (i>=N) {print("Stapel zu klein"); return anzahl;}
|
||||
stapel[i].betrag = b-nennwert(m);
|
||||
stapel[i].muenzarten = m; // mit m Muenzarten
|
||||
i = i+1;
|
||||
}
|
||||
}
|
||||
|
||||
return anzahl; // Stapel ist jetzt leer
|
||||
}
|
||||
|
||||
int main () {
|
||||
print(wechselgeld2(300));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user