Für Vorlesungen, bitte die Webseite verwenden. https://flavigny.de/lecture
您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

56 行
1.4KB

  1. #include "fcpp.hh"
  2. int nennwert (int nr) {// Muenzart -> Muenzwert
  3. if (nr==1) return 1; if (nr==2) return 2;
  4. if (nr==3) return 5; if (nr==4) return 10;
  5. if (nr==5) return 50;
  6. return 0;
  7. }
  8. struct Arg { // Stapelelemente
  9. int betrag; // das sind die Argumente der
  10. int muenzarten; };// rekursiven Variante
  11. const int N = 1000; // Stapelgroesse
  12. int wechselgeld2 (int betrag) {
  13. Arg stapel[N]; // hier ist der Stapel
  14. int i=0; // der "stack pointer"
  15. int anzahl=0; // das Ergebnis
  16. int b,m; // Hilfsvariablen in Schleife
  17. stapel[i].betrag = betrag; // initialisiere St.
  18. stapel[i].muenzarten = 5; // Startwert
  19. i = i+1; // ein Element mehr
  20. while (i>0) { // Solange Stapel nicht leer
  21. i = i-1; // lese oberstes Element
  22. b = stapel[i].betrag;// lese Argumente
  23. m = stapel[i].muenzarten;
  24. if ( b==0 )
  25. anzahl = anzahl+1; // Moeglichkeit gefunden
  26. else if ( b>0 && m>0 ) {
  27. if (i>=N) {
  28. print("Stapel zu klein");
  29. return anzahl;
  30. }
  31. stapel[i].betrag = b; // Betrag b
  32. stapel[i].muenzarten = m-1;// mit m-1 Muenzarten
  33. i = i+1;
  34. if (i>=N) {print("Stapel zu klein"); return anzahl;}
  35. stapel[i].betrag = b-nennwert(m);
  36. stapel[i].muenzarten = m; // mit m Muenzarten
  37. i = i+1;
  38. }
  39. }
  40. return anzahl; // Stapel ist jetzt leer
  41. }
  42. int main () {
  43. print(wechselgeld2(300));
  44. }