/** Enthaelt eine main-Methode zum Wechseln eines Geldbetrages, die auf
 *  statische Methoden zurueckgreift 
 *  @author Ralph Matthes
 *  @version 1.2 
 */
public class Wechsler2 
{  

    public static final String NAME_EINHEIT = "Euro";
    public static final String NAME_HUNDERTSTEL = "Cent";
    

    
   /**  Wechselt einen Geldbetrag in Scheine und Muenzen 
    *   @param args ignorierte Kommandozeilenparameter 
    */ 
    public static void main(String[] args)
    {
	final int EUROS = 2376 ;
	final int CENTS = 87 ;

        int euroBetrag = EUROS ;
        int centBetrag = CENTS ; 
        int anz ; 

        /* Umrechnung in richtige Euros und Cents */ 
        
        int uebertrag = centBetrag / 100 ; 
        euroBetrag = euroBetrag + uebertrag ;
        centBetrag = centBetrag - 100 * uebertrag ; 

        /* Ausgabe der Euroscheine und Muenzen */

        /* Berechnung und Ausgabe der 500er, 200er, 100er */  
	euroBetrag = zehnerpotenz(euroBetrag,100,false);  

	/* Berechnung und Ausgabe der 50er, 20er, 10er */  
	euroBetrag = zehnerpotenz(euroBetrag,10,false);	

	/* Berechnung und Ausgabe der 5er, 2er, 1er */  
	zehnerpotenz(euroBetrag,1,false);


        /* Ausgabe der Cents */	

	/* Berechnung und Ausgabe der 50er, 20er, 10er */  
	centBetrag = zehnerpotenz(centBetrag,10,true);	

	/* Berechnung und Ausgabe der 5er, 2er, 1er */  
	zehnerpotenz(centBetrag,1,true);

    }

    private static int zehnerpotenz(int betrag, int basiswert,
				    boolean istHundertstel){
	int zwischenergebnis;
	zwischenergebnis=ausgabe(betrag,5*basiswert,istHundertstel);
	zwischenergebnis=ausgabe(zwischenergebnis,2*basiswert,istHundertstel);
	return ausgabe(zwischenergebnis,basiswert,istHundertstel);
    }


    private static int ausgabe(int betrag, int stueckwert,
			       boolean istHundertstel){
	int anz = betrag / stueckwert ;
        if (anz > 0) {
	    System.out.println(anz + " mal " + stueckwert + " " +
			       bezeichner(istHundertstel)) ;
	}
	return betrag - anz * stueckwert;
    } 

    private static String bezeichner(boolean istHundertstel){
	if (istHundertstel) return NAME_HUNDERTSTEL;
        else return NAME_EINHEIT;
    }


}


/*

EUROS = 43 
CENTS = 149 

2 mal 20 Euro
2 mal 2 Euro
2 mal 20 Cent
1 mal 5 Cent
2 mal 2 Cent


EUROS = 2376 ;
CENTS = 87 ;

4 mal 500 Euro
1 mal 200 Euro
1 mal 100 Euro
1 mal 50 Euro
1 mal 20 Euro
1 mal 5 Euro
1 mal 1 Euro
1 mal 50 Cent
1 mal 20 Cent
1 mal 10 Cent
1 mal 5 Cent
1 mal 2 Cent

*/
