3047 (datum_app, java, wiwi2005)

das programm besteht aus 2 klassen(application and dateobject) (eine dritte, die eingabeklasse ist nicht aufgeführt und an einer anderen stelle zu finden) und berechnet gedöns mit jahren und werktagen zwischen 1901-01-01 und 2100-12-31.

application

import java.util.*;

class datum_app {
	public static void main (String[] args) {
		int l = 6;
		int m = 10;
		int n = 1909;
		int nowtag = 0;
		int nowmonat = 0;
		int nowjahr = 0;
		int s,t,u,diff,nsumme,msumme,x,y,z,i,help,whelp,dhelp;
		int wzaehler = 0;
	
		GregorianCalendar GC = new GregorianCalendar();
		
		System.out.println("Dieses Programm loest eine wiwi-Programmieraufgabe von 2005 (Stand: 17.12.2007), laeuft sequentiell ab und erwartet vom Benutzer einige Parameter.");
		System.out.println("Zunaechst werden zwei Daten zwischen 1901-01-01 und 2100-12-31 im Format yyyy<return>mm<return>dd<return> erwartet.");
		System.out.println("Es folgen einige debug-parameter der Datumsobjekte.");
		System.out.println("Die zu loesenden Bedingungen werden angezeigt.");
		System.out.println("Der Gregorianische Kalender wird nur zur HEUTE-Feststellung benutzt.");
		System.out.println("Ein drittes Datum YYYY-MM-DD wird erwartet");
	
		n = eingabe.readInt("Erstes Datum, Jahr:");
		m = eingabe.readInt("Erstes Datum, Monat:");
		l = eingabe.readInt("Erstes Datum, Tag:");
		u = eingabe.readInt("Zweites Datum, Jahr:");
		t = eingabe.readInt("Zweites Datum, Monat:");
		s = eingabe.readInt("Zweites Datum, Tag:");
	
		Datum ndatum = new Datum (l,m,n);
		System.out.println("n");
		System.out.println ("gueltig : " + ndatum.gueltig);
		System.out.println (ndatum.jahr + "-" + ndatum.monat + "-" + ndatum.tag);
		System.out.println (ndatum.tagesdiff);
		System.out.println (ndatum.wochentag);
		System.out.println ("Werktag : " + ndatum.werktag);
		if (ndatum.schaltjahr) { System.out.println ("Schaltjahr"); }
		else { System.out.println ("kein Schaltjahr"); }
		System.out.println();
		
		nowtag = GC.get(Calendar.DATE);
		nowmonat = GC.get(Calendar.MONTH) + 1;
		nowjahr = GC.get(Calendar.YEAR);
		Datum heute = new Datum (nowtag, nowmonat, nowjahr);
		System.out.println("und jetzt heute");
		System.out.println ("gueltig : " + heute.gueltig);
		System.out.println (heute.jahr + "-" + heute.monat + "-" + heute.tag);
		System.out.println (heute.tagesdiff);
		System.out.println (heute.wochentag);
		System.out.println ("Werktag : " + heute.werktag);
		if (ndatum.schaltjahr) { System.out.println ("Schaltjahr"); }
		else { System.out.println ("kein Schaltjahr"); }
		System.out.println();
		
		Datum mdatum = new Datum (s,t,u);
		System.out.println("m");
		System.out.println ("gueltig : " + mdatum.gueltig);
		System.out.println (mdatum.jahr + "-" + mdatum.monat + "-" + mdatum.tag);
		System.out.println (mdatum.tagesdiff);
		System.out.println (mdatum.wochentag);
		System.out.println ("Werktag : " + mdatum.werktag);
		if (ndatum.schaltjahr) { System.out.println ("Schaltjahr"); }
		else { System.out.println ("kein Schaltjahr"); }
		System.out.println();
		
		if ((ndatum.gueltig == true) && (mdatum.gueltig ==	true)) {
			if (ndatum.tagesdiff == mdatum.tagesdiff) help = 0;
			else if (ndatum.tagesdiff < mdatum.tagesdiff) help = 1;
			else help = 2;
			switch (help) {
				case 0	:	{
									System.out.println("(Punkt2)Beide Tage identisch. Differenz 0");
								}
				case 1	:	
				case 2	:	{
									diff = Math.abs(mdatum.tagesdiff - ndatum.tagesdiff);
									System.out.println("(Punkt2)Die Differenz betraegt " + diff + " Tage");
								}
				default	:	{
									break;	
								}
			}//switch--help
		}//if
		else {
			System.out.println ("(mindestens) eines der Daten ist ungueltig");
		}
					
		nsumme = ndatum.tagesdiff - ndatum.jahrsumme;
		msumme = mdatum.tagesdiff - mdatum.jahrsumme;
		
		System.out.println ("(Punkt 1) :");
		System.out.println ("Tage seit 1. Januar " + ndatum.jahr + " (n) " + nsumme);
		System.out.println ("Tage seit 1. Januar " + mdatum.jahr + " (m) " + msumme);
		
		System.out.println ("Eingabe eines Datums in der Vergangenheit (Punkt 3)");
		z = eingabe.readInt ("Jahr");
		y = eingabe.readInt ("Monat");
		x = eingabe.readInt ("Tag");
		Datum past = new Datum (x,y,z);
		if (!past.gueltig) System.out.println("Datum nicht gueltig");
		else if (past.tagesdiff > heute.tagesdiff) {
			System.out.println ("Datum liegt nicht in der Vergangenheit. Identische Daten hier kein Fehlerfall.");
		}//if
		else if (past.tagesdiff == heute.tagesdiff) {
			if (heute.werktag == true) System.out.println("Daten identisch. Werktag.");
			else System.out.println("Daten identisch. kein Werktag.");	
		}//else-if1
		else	if (Math.abs(past.tagesdiff - heute.tagesdiff) < 3) {
			diff = (heute.tagesdiff - past.tagesdiff);
				switch (diff) {
					case 1	:	{
										if (past.werktag && heute.werktag) wzaehler = 2;
										else if (past.werktag || heute.werktag) wzaehler = 1;
										else wzaehler = 0;
										break;
									}
					case 2	:	{
										dhelp = past.wtag;
										switch (dhelp)		{
											case 1	:
											case 2	:
											case 3	:
											case 4	:	wzaehler = 2;
															break;
											case 5	:	wzaehler = 1;
															break;
											case 6	:	wzaehler = 0;
															break;
											case 7	:	wzaehler = 1;
															break;
											default	: break;
										}//switch--dhelp
									}
					default	:	{
										break;
									}
				}//switch--diff
			}//else-if_diff3
		else {
			wzaehler = 1;
			for (i=past.tagesdiff; i<heute.tagesdiff; i++) {
				whelp = i;
				Datum idate = new Datum (whelp);
				if (idate.werktag) { wzaehler+=1; }
			}//for
		}//else
		System.out.println ("Werktage von " + past.jahr + "-" + past.monat + "-" + past.tag + " bis heute (Punkt 3): " + wzaehler);
		System.out.println ("Programmende. success");
	}//main
}//class

objectclass

class Datum {
	
	Boolean gueltig;
	int tag;
	int monat;
	int jahr;
	String wochentag;
	Boolean werktag;
	Boolean schaltjahr;
	int tagesdiff;
	int jahrsumme;
	int wtag;
	
//Standard-Konstruktor
	public Datum () {
		gueltig = true;
		tag = 6;
		monat = 10;
		jahr = 2012;
		wochentag = "Samstag";
		werktag = false;
		schaltjahr = true;
		tagesdiff = 40822;
	}//Standard-Konstruktor
	
	public Datum (int neuerTag, int neuerMonat, int neuesJahr) {
		int i = 0;
		int jahrdiff = 0;
	
		tag = neuerTag;
		monat = neuerMonat;
		jahr = neuesJahr;
		if ((jahr < 1901) || (jahr > 2100)) {
			gueltig = false;
			tag = 0;
			monat = 0;
			jahr = 0;
			werktag = false;
			schaltjahr = false;
		}
		else {
			if ((jahr % 4) == 0) {
				if ((jahr % 100) == 0) {
					if ((jahr % 400) == 0) {
						schaltjahr = true;
					}//400
					else { schaltjahr = false; }				
				}//100
				else { schaltjahr = true; }
			}//4	
			else { schaltjahr = false; }
			switch (monat) {
				case 1 :
				case 3 :
				case 5 :
				case 7 :
				case 8 :
				case 10:
				case 12 :	{
									if ((tag < 1) || (tag > 31)) { 
										gueltig = false;
										tag = 0;
										monat = 0;
										jahr = 0;
									}//if
									else { gueltig = true; }
									break;
								}
				case 4:
				case 6 :
				case 9 :
				case 11 :	{
									if ((tag < 1) || (tag > 30)) { 
										gueltig = false;
										tag = 0;
										monat = 0;
										jahr = 0;
									}//if
									else { gueltig = true; }
									break;
								}
				case 2 :		{
									if (schaltjahr) { i = 29; }
									else { i = 28; }
									if ((tag < 1) || (tag > i)) {
										gueltig = false;
										tag = 0;
										monat = 0;
										jahr = 0;
									}//if
									else { gueltig = true; }
									break;
								}
				default :		{
									gueltig = false;
									break;
								}
			}//switch--monat
			//Referenztag
			if ((tag == 1) && (monat == 1) && (jahr == 1901)) { wochentag = "Dienstag"; werktag = true; tagesdiff = 1; }
			else {
				jahrdiff = jahr - 1901;
				for (i=1901; i<jahr; i++) {
					if ((i % 4) == 0) {
						if ((i % 100) == 0) {
							if ((i % 400) == 0) {
								tagesdiff += 366;
							}//400
							else { tagesdiff += 365; }				
						}//100
						else { tagesdiff += 366; }
					}//4
					else tagesdiff += 365;	
				}//for	
				jahrsumme = tagesdiff;
				switch (monat) {
					case 1 :		{ 
										tagesdiff += tag; 
										break;
									}
					case 3 : 	{
										if (schaltjahr) {
											tagesdiff += 31;
											tagesdiff += 29;
											tagesdiff += tag;
										}
										else {
											tagesdiff += 31;
											tagesdiff += 28;
											tagesdiff += tag;
										}
										break;
									}
					case 5 :		{
										if (schaltjahr) {
											tagesdiff += 31;
											tagesdiff += 29;
											tagesdiff += 31;
											tagesdiff += 30;
											tagesdiff += tag;	
										}
										else {
											tagesdiff += 31;
											tagesdiff += 28;
											tagesdiff += 31;
											tagesdiff += 30;
											tagesdiff += tag;
										}
										break;
									}
					case 7 :		{
										if (schaltjahr) {
											tagesdiff += 31;
											tagesdiff += 29;
											tagesdiff += 31;
											tagesdiff += 30;
											tagesdiff += 31;
											tagesdiff += 30;
											tagesdiff += tag;	
										}
										else {
											tagesdiff += 31;
											tagesdiff += 28;
											tagesdiff += 31;
											tagesdiff += 30;
											tagesdiff += 31;
											tagesdiff += 30;
											tagesdiff += tag;
										}
										break;
									}
					case 8 :		{
										if (schaltjahr) {
											tagesdiff += 31;
											tagesdiff += 29;
											tagesdiff += 31;
											tagesdiff += 30;
											tagesdiff += 31;
											tagesdiff += 30;
											tagesdiff += 31;
											tagesdiff += tag;	
										}
										else {
											tagesdiff += 31;
											tagesdiff += 28;
											tagesdiff += 31;
											tagesdiff += 30;
											tagesdiff += 31;
											tagesdiff += 30;
											tagesdiff += 31;
											tagesdiff += tag;
										}
										break;
									}
					case 10 :	{
										if (schaltjahr) {
											tagesdiff += 31;
											tagesdiff += 29;
											tagesdiff += 31;
											tagesdiff += 30;
											tagesdiff += 31;
											tagesdiff += 30;
											tagesdiff += 31;
											tagesdiff += 31;
											tagesdiff += 30;
											tagesdiff += tag;	
										}
										else {
											tagesdiff += 31;
											tagesdiff += 28;
											tagesdiff += 31;
											tagesdiff += 30;
											tagesdiff += 31;
											tagesdiff += 30;
											tagesdiff += 31;
											tagesdiff += 31;
											tagesdiff += 30;
											tagesdiff += tag;
										}
										break;
									}
					case 12 : 	{
										if (schaltjahr) {
											tagesdiff += 31;
											tagesdiff += 29;
											tagesdiff += 31;
											tagesdiff += 30;
											tagesdiff += 31;
											tagesdiff += 30;
											tagesdiff += 31;
											tagesdiff += 31;
											tagesdiff += 30;
											tagesdiff += 31;
											tagesdiff += 30;
											tagesdiff += tag;	
										}
										else {
											tagesdiff += 31;
											tagesdiff += 28;
											tagesdiff += 31;
											tagesdiff += 30;
											tagesdiff += 31;
											tagesdiff += 30;
											tagesdiff += 31;
											tagesdiff += 31;
											tagesdiff += 30;
											tagesdiff += 31;
											tagesdiff += 30;
											tagesdiff += tag;
										}
										break;
									}
									
					case 4 :		{
										if (schaltjahr) {
											tagesdiff += 31;
											tagesdiff += 29;
											tagesdiff += 31;
											tagesdiff += tag;
										}
										else {
											tagesdiff += 31;
											tagesdiff += 28;
											tagesdiff += 31;
											tagesdiff += tag;
										}
										break;
									}
					case 6 :		{
										if (schaltjahr) {
											tagesdiff += 31;
											tagesdiff += 29;
											tagesdiff += 31;
											tagesdiff += 30;
											tagesdiff += 31;
											tagesdiff += tag;
										}
										else {
											tagesdiff += 31;
											tagesdiff += 28;
											tagesdiff += 31;
											tagesdiff += 30;
											tagesdiff += 31;
											tagesdiff += tag;
										}
										break;
									}
					case 9 :		{
										if (schaltjahr) {
											tagesdiff += 31;
											tagesdiff += 29;
											tagesdiff += 31;
											tagesdiff += 30;
											tagesdiff += 31;
											tagesdiff += 30;
											tagesdiff += 31;
											tagesdiff += 31;
											tagesdiff += tag;	
										}
										else {
											tagesdiff += 31;
											tagesdiff += 28;
											tagesdiff += 31;
											tagesdiff += 30;
											tagesdiff += 31;
											tagesdiff += 30;
											tagesdiff += 31;
											tagesdiff += 31;
											tagesdiff += tag;
										}
										break;
									}
					case 11 :	{
										if (schaltjahr) {
											tagesdiff += 31;
											tagesdiff += 29;
											tagesdiff += 31;
											tagesdiff += 30;
											tagesdiff += 31;
											tagesdiff += 30;
											tagesdiff += 31;
											tagesdiff += 31;
											tagesdiff += 30;
											tagesdiff += 31;
											tagesdiff += tag;	
										}
										else {
											tagesdiff += 31;
											tagesdiff += 28;
											tagesdiff += 31;
											tagesdiff += 30;
											tagesdiff += 31;
											tagesdiff += 30;
											tagesdiff += 31;
											tagesdiff += 31;
											tagesdiff += 30;
											tagesdiff += 31;
											tagesdiff += tag;
										}
										break;
									}
					
					case 2 :		{
										tagesdiff += 31;
										tagesdiff += tag;
									}
					
					default :		{
										break;
									}
				}//switch--monat	
				i = tagesdiff % 7;
				switch (i) {
					case 0 : 	{
										wochentag = "Montag";
										wtag = 1;
										break;
									}
					case 1 :		{
										wochentag = "Dienstag";
										wtag = 2;
										break;
									}
					case 2 :		{
										wochentag = "Mittwoch";
										wtag = 3;
										break;
									}
					case 3 :		{
										wochentag = "Donnerstag";
										wtag = 4;
										break;
									}
					case 4:		{
										wochentag = "Freitag";
										wtag = 5;
										break;
									}
					case 5 :		{
										wochentag = "Samstag";
										wtag = 6;
										break;
									}
					case 6 :		{
										wochentag = "Sonntag";
										wtag = 7;
										break;
									}
					default : 	{ 	
										wtag = -1;
										break; 
									}
				}//switch--i
				switch (wtag) {
					case 1		:
					case 2		:
					case 3 		:
					case 4	 	:
					case 5 		: 	{ 
											werktag = true;
											break; 
										}
					case 6		:
					case 7		:	{
											werktag = false;
											break;
										}
					default		:	{
											break;
										}
				}//switch--wtag
			}//Referenztag-else
		}//gueltiger Bereich
	}//Konstruktor
	
	public Datum (int tageszaehler) {
		int i = 0;
		if ((tageszaehler < 1) || (tageszaehler > 73049)) {
			gueltig = false;
		}
		else {
			i = tageszaehler % 7;
			switch (i) {
				case 0	:	{
									wtag = 2;
									wochentag = "Dienstag";
									werktag = true;
									break;
								}
				case 1	:	{
									wtag = 3;
									wochentag = "Mittwoch";
									werktag = true;
									break;
								}
				case 2	:	{
									wtag = 4;
									wochentag = "Donnerstag";
									werktag = true;
									break;
								}
				case 3	:	{
									wtag = 5;
									wochentag = "Freitag";
									werktag = true;
									break;
								}
				case 4	:	{
									wtag = 6;
									wochentag = "Samstag";
									werktag = false;
									break;
								}
				case 5	:	{
									wtag = 7;
									wochentag = "Sonntag";
									werktag = false;
									break;
								}
				case 6	:	{
									wtag = 1;
									wochentag = "Montag";
									werktag = true;
									break;
								}
				default	:	{
									break;
								}
			}//switch--i
		}//gueltig
	}//Konstruktor2
}//class Datum
Advertisements

About this entry