homeduke Prof. Dr. Uwe Schmidt FH Wedel

Die Datei: WechselGeld.java


weiter
   1/**
   2 * @autor Uwe Schmidt
   3 *
   4 * Geld wechseln
   5 *
   6 * Auf wieviele Arten kann man eine Mark wechseln?
   7 *
   8 * die Muenzwerte werden in einem Feld gespeichert,
   9 * das ab 0 indiziert wird
  10 */
  11
  12//--------------------
  13
  14class WechselGeld {
  15
  16  public static
  17  void main( String[] args ) {
  18
  19    int[] Pfennige = {
  20      1, 2, 5,
  21      10, 50,
  22      100, 200, 500,
  23      1000, 2000, 5000,
  24      10000, 20000, 50000,
  25      100000
  26    };
  27
  28    GeldWechsler pf = new GeldWechsler(Pfennige);
  29
  30    int n = 1;
  31    int res;
  32
  33    try {
  34      n = Integer.valueOf(args[0]).intValue();
  35    } catch (Exception e) {}
  36
  37    res = pf.wechseln(n);
  38
  39    System.out.println
  40      ( "Geld wechseln\n\n" + 
  41        n +
  42        " Pf. " +
  43        ( n==? "kann" : "koennen") +
  44        " auf " +
  45        res +
  46        " Art" +
  47        ( res==? "" : "en" ) +
  48        " gewechselt werden");
  49  }
  50}
  51
  52//--------------------
  53
  54/**
  55 * Die Geldwechselklasse mit einer Feld-Variable muenzen
  56 * fuer die erlaubten Muenzwerte
  57 */
  58
  59class GeldWechsler {
  60
  61  int[] muenzen;
  62
  63  //--------------------
  64
  65  GeldWechsler(int[] muenzen) {
  66    this.muenzen = muenzen;
  67  }
  68
  69  //--------------------
  70
  71  /**
  72   * @param betrag soll gewechselt werden
  73   * @param muenzarten bestimmt die Menge der Muenzen, die beim Wechseln
  74   * verwendet werden sollen, alle Werte in dem Feld muenzen im Intervall
  75   * 0 bis muenzarten einschliesslich werden verwendet
  76   */
  77
  78  protected
  79  int wechseln(int betrag,
  80               int muenzarten) {
  81    return
  82      ( betrag == 0 )
  83      ? 1
  84      : (
  85         ( (betrag < 0) || (muenzarten < 0) )
  86         ? 0
  87         : ( wechseln( betrag - muenzen[muenzarten],
  88                       muenzarten)
  89             +
  90             wechseln( betrag,
  91                       muenzarten - 1) ));
  92  }
  93
  94  //--------------------
  95  
  96  /** die oeffentlich rechtliche Routine,
  97    * die die rekursive "wechseln" Routine startet
  98    */
  99
 100  public
 101  int wechseln(int betrag) {
 102    return
 103      wechseln( betrag,
 104                muenzen.length -1);
 105  }
 106}
 107
 108//--------------------

Die Quelle: WechselGeld.java


Letzte Änderung: 29.04.2013
© Prof. Dr. Uwe Schmidt
Prof. Dr. Uwe Schmidt FH Wedel