# beliebiges Datum einlesen, Wochentag eines Datums ermitteln



## Sally (17. Nov 2006)

huhu bin neu hier und habe auch schon meine erste Frage an euch!!

Ich soll ein Programm schreiben, welches ein beliebiges Datum ab dem 1.1.1601 einliest und dazu noch den dazugehörigen Wochentag ausgibt. 
Man weiss, dass der 1.1.1601 ein Montag war. 


für jede Hilfe von euch bin ich sehr dankbar... habe wirklich kein blassen schimmer!


Sally.  ???:L

_L-ectron-X hat diesen Beitrag am 17.11.2006 um 16:58 Uhr editiert.
Titel geändert. "Bitte um Hilfe!" ist nicht sehr dienlich, wenn man nach einer Lösung sucht...  :? _


----------



## Wildcard (17. Nov 2006)

Sieh dir mal den GregorianCalendar und die Klasse Date an.


----------



## Sally (17. Nov 2006)

ich darf mit der Klasse Date und dem Calender nicht arbeiten,
..
kann es sein dass ich mit arrays machen muss??
Arbeiten darf ich nur mit Variablendeklinationen, If Anweiseungen und Ausagen mit der System out methode


----------



## Wildcard (17. Nov 2006)

Tolle Aufgabe  :autsch: 
Du musst die Anzahl der Tage vom 1.1.1601 bis zum Datum zählen (Schaltjahr beachten) und mit %7 kommst du dann an den Tag.

Übrigens:


			
				Langenscheid hat gesagt.:
			
		

> De·kli·na·ti'on, die; -,-en 1.LINGUISTIK Beugung, Formenabwandlung eines → Substantivs , → Adjektivs , → Pronomens oder → Numerals nach Geschlecht, Zahl und Fall, vgl. Konjugation(1) 2. Winkelabstand eines Gestirns vom Himmelsäquator in Grad 3. Abweichung der Richtung zum magnetischen Pol von der wahren Polrichtung, Missweisung


Du meinst eine Deklaration  :wink:


----------



## Sally (17. Nov 2006)

hahaha eine genau eine Deklaration!!
ja soweit war ich auch....bloss ich hab kein plan wie ich damit anfangen soll!
Meine Java Kenntnisse = Null (


----------



## dercheffe (17. Nov 2006)

hier für das problem des schaltjahrs ein hinweis:


    * Alle Jahre, welche durch 4 ohne Rest teilbar sind, sind Schaltjahre.
    * Alle Jahre, welche durch 100 ohne Rest teilbar sind, sind keine Schaltjahre.
    * Alle Jahre, welche durch 400 ohne Rest teilbar sind, sind wiederum Schaltjahre.
[quelle:wikipedia ]


----------



## Wildcard (17. Nov 2006)

Mit Java hat das nicht viel zu tun (die Java Klassen dafür darfst du ja nicht benutzen  :roll: ).
Ist eigentlich eine Fleißaufgabe. Zuerst eine Methode die die anzahl der Tage bis zum passenden Jahr berechnet:
ein Jahr hat 365 Tage, es sei denn es ist durch 4 teilbar.
Ist es auch noch durch 100 teilbar sind es wieder nur 365 Tage ausser es ist auch durch 400 teilbar.
Dann eine Methode die die Anzahl der Tage vom 1.1 dieses Jahres bis zum Datum errechnet.
Du weißt ja wie viele Tage ein Monat hat... (auch hier das Schaltjahr nicht vergessen, also am besten eine eigene isSchaltjahr Methode).
Dann zählst du beide Werte zusammen und machst %7


----------



## Leroy42a (17. Nov 2006)

Kurz in Java geschrieben:


```
boolean istSchaltJahr(int jahr) {
  return jahr%4==0 && (jahr%100 != 0 || jahr%400 == 0);
}
```


----------



## gast (17. Nov 2006)

Also ich probiere hier jetzt schon lange Zeit, aber ich komme einfach nicht weiter. Vielleicht mal eben zum Verständnis.

Ablauf des Programms:

1. Eingabe des Datums
2. Prüfen ob es ein Schaltjahr ist
3. Restliche Tage bis zum nächsten Jahr berechnen oder von 366 oder 365 vergangene Tage abziehen
4. Wenn Schaltjahr dann 366 Tage und die irgendwie zwischenspeichern, wenn nicht 365
5. for-Schleife durchlaufen bis alle Jahre zwischen 1601 und dem eigebenem Datum abgearbeitet sind, Schaltjahre beachten
6. Nun habe ich die komplette Anzahl der Tage die da zwischen liegen
7. Die Anzahl der Tage durch 7 teilen, für die zu Ordnung der Tage

Bem: Montag = 0 ... Sonntag = 7 oder?

Frage: Wie realisiere ich das Ganze? Wie ich prüfe ob es ein Schaltjahr ist , hab ich glaub ich raus, aber nicht wie ich dann die Tage zusammen zählen kann und dann noch den richtigen Tag rausbekomme.

Danke für die Hilfe!


----------



## DocRandom (18. Nov 2006)

> Bem: Montag = 0 ... Sonntag = 7 oder?



..nö, Sonntag = 0 .... Samstag = 6

mfg
DocRandom


----------



## SlaterB (18. Nov 2006)

gast hat gesagt.:
			
		

> Wie ich prüfe ob es ein Schaltjahr ist , hab ich glaub ich raus, aber nicht wie ich dann die Tage zusammen zählen kann und dann noch den richtigen Tag rausbekomme.


wo ist das Problem?
Datum 17. 3. 1699

alle Tage im Jahr 1601 zählen
alle Tage im Jahr 1602 addieren
alle Tage im Jahr 1603 addieren
..
alle Tage im Jahr 1698 addieren
alle Tage im Januar 1699 addieren
alle Tage im Februar 1699 addieren
17 addieren

wenn du dir Hilfsoperationen wie
getTageInJahr(int jahr)
oder
getTageInMonat(int monat, int jahr)
definierst,
dann musst du diese nur noch geschickt aufrufen


----------



## Yzebär (18. Nov 2006)

Nur mal so zur Info... der September 1752 hat eine Besonderheit aufzuweisen. In allen Gebieten(zB UK und USA), wo der julianische, durch den gregorianischen Kalender ersetzt wurde, hatte der September 1752 nur 19 Tage.

Hier steht auch noch was zur Berechnung/Anzahl der Tage:

de.wikipedia.org/wiki/Gregorianischer_Kalender


----------



## eXtreem (20. Nov 2006)

jaja, so sind die infromatik stunden von TU braunschweig  selber nix wa?


----------



## Becks_07 (21. Nov 2006)

joar ich brauch das auch wäre cool wenn jemand ne lösung hat oder zu mindest mal ne vernüftige methode und schleife hier posten könnte. ;-)


----------



## Guest (21. Nov 2006)

Becks_07 hat gesagt.:
			
		

> joar ich brauch das auch wäre cool wenn jemand ne lösung hat oder zu mindest mal ne vernüftige methode und schleife hier posten könnte. ;-)



nur ich brauch das nicht als pflichtaufgabe sondern als übung, weil bin eh schon zugelassen zur prüfung. muhahaha


----------



## Guest (22. Nov 2006)

wir dürfen doch gar keine for-schleifen benutzen oder?


----------



## wurstkuchen (26. Nov 2006)

Richtig Ihr nasen und heute is Abgabe.


----------



## wurstkuche (26. Nov 2006)

Aber ich will mal nicht so sein :

http://www.grundkurs-java.de/band1/loesungen/5/4/6/Wochentag.java

Man sieht sie auf ein Schnitzelbrötchen -_-


----------



## DocRandom (26. Nov 2006)

.wenn Du schon so große Töne spuckst, dann erkläre mal den Code-Teil:

```
h = (((26*m - 2)/10) + t + y + y/4 + c/4 - 2*c) % 7;
```

..und sag mir auch was das mit der Eingangserklärung:


> Ich soll ein Programm schreiben, welches ein beliebiges Datum ab dem 1.1.1601 einliest und dazu noch den dazugehörigen Wochentag ausgibt.
> Man weiss, dass der 1.1.1601 ein Montag war.


..zu tun hat!

mfg
DocRandom


----------

