Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
beliebiges Datum einlesen, Wochentag eines Datums ermitteln
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... :?
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
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
* 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.
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
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.
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.
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
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:
.wenn Du schon so große Töne spuckst, dann erkläre mal den Code-Teil:
Code:
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.