/**
 *
 * Programmieraufgabe P-1 (Wechsler.java)
 *
 * @author Leonhard Fellermayr
 * @version 1.2
 */

public class Wechsler
{

	/** @param args Dieses Programm wertet keine Kommandozeilenparameter aus */

	public static void main (String[] args)
	{

		/**
		 *  @param EUROS Euro-Anteil des Eingabebetrags
		 *  @param CENTS Cent-Anteil des Eingabebetrags
		 * 
		 *  - wird eines Tages durch eine "vernŸnftige" Einlese-Routine
		 *    ersetzt ...
		 * 
		 */
		
		final int EUROS = 2124;
		final int CENTS = 3419;

		/** Deklaration der einzelnen WŠhrungs-Gegenwerte als Konstanten */
		
		final int EURO_500 = 500;
		final int EURO_200 = 200;
		final int EURO_100 = 100;
		final int EURO_50  =  50;
		final int EURO_20  =  20;
		final int EURO_10  =  10;
		final int EURO_5   =   5;
		final int EURO_2   =   2;
		final int EURO_1   =   1;
		
		final int CENT_50  =  50;
		final int CENT_20  =  20;
		final int CENT_10  =  10;
		final int CENT_5   =   5;
		final int CENT_2   =   2;
		final int CENT_1   =   1;
		
		/** Kopieren der obigen Konstantenwerte in lokale Variablen,
		 *  um Schreibzugriff darauf zu erhalten.
		 * 
		 *  @param myEuros Eingabe-Anzahl Euro
		 *  @param myCents Eingabe-Anzahl Cents
		*/

		int myEuros = EUROS;
		int myCents = CENTS;

		/** Teste auf negative Werte: Fehlermeldung und Beendigung */
		
		if ((myCents < 0) || (myEuros < 0)) {
			System.out.println ("Fehler: Werte kleiner Null werden nicht akzeptiert.");
			System.exit(0);
		}
	
		/** als Erstes alle Cents >= 100 den Euros zuschlagen */

		if (myCents >= 100) {
			myEuros += myCents / 100;
			myCents = myCents % 100;
		}

		/** Auszuzahlenden Betrag auf die Konsole schreiben */
		
		System.out.println ("AUSGEZAHLT WERDEN : " + myEuros + "," + myCents + " EUR\n");

		/** ******* BEHANDLUNG DER EINZELNEN EURO-BANKNOTEN ******* */
		
		/** @param raus Temporaere Variable fuer herauszugebende Scheinanzahl
		 * 
		 *  Wir arbeiten mit Ganzzahldivision und Modulo (Rest).
		 *  Die WŠhrungs-Gegenwerte wurden oben als Konstanten deklariert.
		 * 
		 * */

		int raus;

		raus = myEuros / EURO_500; myEuros %= EURO_500;
		if (raus != 0)
			System.out.println (raus + " mal " + EURO_500 + " Euro");

		raus = myEuros / EURO_200; myEuros %= EURO_200;
		if (raus != 0)
			System.out.println (raus + " mal " + EURO_200 + " Euro");

		raus = myEuros / EURO_100; myEuros %= EURO_100;
		if (raus != 0)
			System.out.println (raus + " mal " + EURO_100 + " Euro");

		raus = myEuros / EURO_50;  myEuros %= EURO_50;
		if (raus != 0)
			System.out.println (raus + " mal  " + EURO_50 + " Euro");

		raus = myEuros / EURO_20;  myEuros %= EURO_20;
		if (raus != 0)
			System.out.println (raus + " mal  " + EURO_20 + " Euro");

		raus = myEuros / EURO_10;  myEuros %= EURO_10;
		if (raus != 0)
			System.out.println (raus + " mal  " + EURO_10 + " Euro");

		raus = myEuros / EURO_5;   myEuros %= EURO_5;
		if (raus != 0)
			System.out.println (raus + " mal   " + EURO_5 + " Euro");

		/** ******* BEHANDLUNG DER EINZELNEN EURO-M†NZEN ******* */

		raus = myEuros / EURO_2; myEuros %= EURO_2;
		if (raus != 0)
			System.out.println (raus + " mal   " + EURO_2 + " Euro");

		raus = myEuros;          myEuros %= EURO_1;
		if (raus != 0)
			System.out.println (raus + " mal   " + EURO_1 + " Euro");

		/** ******* BEHANDLUNG DER EINZELNEN CENT-M†NZEN ******* */

		raus = myCents / CENT_50; myCents %= CENT_50;
		if (raus != 0)
			System.out.println (raus + " mal  " + CENT_50 + " Cents");

		raus = myCents / CENT_20; myCents %= CENT_20;
		if (raus != 0)
			System.out.println (raus + " mal  " + CENT_20 + " Cents");

		raus = myCents / CENT_10; myCents %= CENT_10;
		if (raus != 0)
			System.out.println (raus + " mal  " + CENT_10 + " Cents");

		raus = myCents / CENT_5;  myCents %= CENT_5;
		if (raus != 0)
			System.out.println (raus + " mal   " + CENT_5 + " Cents");

		raus = myCents / CENT_2;  myCents %= CENT_2;
		if (raus != 0)
			System.out.println (raus + " mal   " + CENT_2 + " Cents");

		raus = myCents;           myCents %= CENT_1;
		if (raus != 0)
			System.out.println (raus + " mal   " + CENT_1 + " Cent");

		/** nach Adam Riese darf jetzt kein Rest mehr Ÿbrig sein */
		
		if ((myEuros != 0) || (myCents != 0))
			System.out.println ("... this should NEVER happen ...");

	}

}

/*

  TESTEINGABE 1 (EUROS = 2124, CENTS = 3419, wie oben definiert):

	AUSGEZAHLT WERDEN : 2158,19 EUR

	4 mal 500 Euro
	1 mal 100 Euro
	1 mal  50 Euro
	1 mal   5 Euro
	1 mal   2 Euro
	1 mal   1 Euro
	1 mal  10 Cents
	1 mal   5 Cents
	2 mal   2 Cents

  TESTEINGABE 2 (EUROS = 357, CENTS = 88):

	AUSGEZAHLT WERDEN : 357,88 EUR

	1 mal 200 Euro
	1 mal 100 Euro
	1 mal  50 Euro
	1 mal   5 Euro
	1 mal   2 Euro
	1 mal  50 Cents
	1 mal  20 Cents
	1 mal  10 Cents
	1 mal   5 Cents
	1 mal   2 Cents
	1 mal   1 Cent

*/
