Ви не можете вибрати більше 25 тем
Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.
|
- #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));
- }
|