/*
 * Aufgabe 19 c:
 * -------------
 *
 * Realisieren Sie die Methode tagImJahr in Java. Überprüfen Sie hierbei, ob
 * alle übergebenen Parameter Sinn ergeben. Wenn mindestens einer der Parameter
 * keinen Sinn ergibt, soll eine Fehlermeldung auf dem Bildschirm ausgegeben
 * werden und anschließend soll der Wert 0 zurück gegeben werden.
 */

public class Aufgabe19c
{
	/* Tage pro Monat (normal) */
	private static int[] tpmN =
		{31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};

	/* Tage pro Monat (Schaltjahr) */
	private static int[] tpmS =
		{31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};

	public static int tagImJahr(int t, int m, int j)
	{
		int[] tp;

		/* Schaltjahrtest */
		tp = (j % 4 == 0 && j % 100 != 0) || j % 400 == 0 ? tpmS : tpmN;

		/* teste Datum auf Gültigkeit */
		if ((j < 1900 || j > 2040) ||
		    (m < 1 || m > 12) ||
		    (t < 1 || t > tp[m-1])) {
			System.err.println("Datum " + t + "." + m + "."
				+ j + " ist ungueltig");
			return 0;
		}

		/* summiere vorangehende monatstage */
		for (--m; m-- > 0; t += tp[m]);

		return t;
	}

	public static void main(String[] argv)
	{
		int t = 29;
		int m = 2;
		int j = 2000;

		System.out.println(t + "." + m + "." + j +
			" = " + tagImJahr(t, m, j));
	}
}
