Wie berechnet man den Aschermittwoch?

Neue Frage »

Shinba8 Auf diesen Beitrag antworten »
Wie berechnet man den Aschermittwoch?
Meine Frage:
Guten Morgen,

ich möchte mir den Aschermittwoch berechnen, ein Teil eines Programmes. Nur blöderweise habe ich einen Denkfehler (denke ich mal).

Also, was ich zur Zeit habe:


1. Es wird überprüft, ob das Jahr ein Schaltjahr ist, so wie hier unten jetzt textlich dargestellt wird (R1)

2. Ostersonntag wird nach der Gaußsche Osterformel berechnet (R1)

3. Nun weiß man, dass Aschermittwoch 46 Tage vor Ostersonntag ist. (R3)

4. So weit, so gut. Hier dachte ich, dass ich es geschafft habe. Bei der Überprüfung aber, ob dies wirklich funktioniert kam heraus, dass z.B. für das Jahr 2032 (auch Schaltjahr) Aschermittwoch am 12.02.2032 sei, obwohl es laut dem Internet am 11.02.2032 sei. (1 Tag Unterschied). Beim Jahr 2036 (auch Schaltjahr) kam bei mir 28.02.2036 heraus, laut Internet ist es aber am 27.02.2036 (wieder 1 Tag Unterschied). Für das Jahr 2041 z.B. kommt bei mir 06.03.2041 heraus, laut Internet ist dies korrekt!

---

Nun ist meine Frage, wieso das so ist? Ist irgend etwas falsch an meiner Denkweise, oder hab ich etwas vergessen in der Rechnung, oder sonst irgend etwas? Ich persönlich kann es mir halt nicht erklären, dass nur das Schaltjahr ab einem bestimmten Jahr nicht mehr funktioniert. Kann mir hier wer helfen?

Danke schon mal im Vorraus!

Mit freundlichen Grüßen Shinba8




Meine Ideen:
R1:
Jahr Modulo 400 = 0 //Schaltjahr

Jahr Modulo 4 = 0 //Schaltjahr

Jahr Modulo 100 = 0 //Kein Schaltjahr

Alle anderen Jahre sind keine Schaltjahre


R2:
K(X) = X div 100
M(K) = 15 + (3K + 3) div 4 ? (8K + 13) div 25
S(K) = 2 ? (3K + 3) div 4
A(X) = X mod 19
D(A,M) = (19A + M) mod 30
R(D,A) = (D + A div 11) div 29
OG(D,R) = 21 + D ? R
SZ(X,S) = 7 ? (X + X div 4 + S) mod 7
OE(OG,SZ) = 7 ? (OG ? SZ) mod 7
OS = OG + OE
#Nun hat man den Ostersonntag errechnet

R3:
Ostersonntag (z.B. 27.03.2016) - 46 Tage

Nun hab ich es so gemacht, dass -46 + 27 gerechnet wird und derMonat um eins vermindert wird, sodass - 19 herauskommt und schlussendlich 28 (Februar hat 28 Tage, wegen Schaltjahr) - 19 gerechnet wird und das Ergebnis herauskommt, wann Aschermittwoch ist, in diesem Fall: 10.02.2016
HAL 9000 Auf diesen Beitrag antworten »

Zumindest sollte der Aschermittwoch ja auf einen Mittwoch fallen. Und das trifft sowohl auf den 11.02.2032 als auch den 27.02.2036 zu.

Wenn du mit dem 12.02.2032 und 28.02.2036 auf Donnerstage kommst, dann scheint in deiner Rechnung für Schaltjahre ja was nicht in Ordnung zu sein:

Entweder mit der Berechnung des Ostersonntag, oder aber mit der 46-Tage-Rückrechnung. smile

P.S.: Deine Rechnungen weiter unten habe ich mir (noch) nicht angeschaut.
Dopap Auf diesen Beitrag antworten »

deine Schaltjahrberechnung gehört in ein Programm.
Jedenfalls ist JJJJ mod 100 = 0 kein Hinweis auf kein SJ:

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
IF JJJJ MOD 400 = 0 
THEN 1 
ELSE
     IF  JJJJ MOD 100 = 0 
     THEN 0 
     ELSE IF JJJJ MOD  MOD 4=0 
             THEN 1
             ELSE 0  
              END
      END
END
Equester Auf diesen Beitrag antworten »

Anmerkung an die Helfer:
Auch hier zu finden: http://www.mathelounge.de/384414/aschermittwoch-berechnen
HAL 9000 Auf diesen Beitrag antworten »

@Dopap

Nicht dass es hier auf Rechenzeit ankommen würde, aber normalerweise designt man eine solche IF-ELSE-Kaskade so, dass man "im Mittel" über die in Frage kommenden Aufrufparameter (hier JJJJ) möglichst wenige Verzweigungen hat. Daher würde ich hier eher so kaskadieren:

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
IF JJJJ MOD  MOD 4 = 0
THEN
    IF  JJJJ MOD 100 = 0
    THEN
        IF JJJJ MOD 400 = 0
        THEN 1
        ELSE 0
        END
    ELSE 1
    END
ELSE 0
END
Hier hat man im 400-Jahres-Intervall für 300 Jahre nur einen Vergleich, für 96 Jahre zwei Vergleiche und nur für 4 Jahre drei Vergleiche.

In deiner Variante hat man im selben Intervall für 1 Jahr nur einen Vergleich, für 3 Jahre zwei Vergleiche und für 396 Jahre drei Vergleiche. Augenzwinkern
Dopap Auf diesen Beitrag antworten »

einverstanden.
Stammt aus einer logischen Trockenübung mit Struktogrammen, also die Schaltjahrfrage überhaupt zu verstehen.
 
 
mYthos Auf diesen Beitrag antworten »

Zitat:
Original von Equester
Anmerkung an die Helfer:
Auch hier zu finden: http://www.mathelounge.de/384414/aschermittwoch-berechnen


Nachdem dort schon geholfen wurde, wird hier

*** geschlossen ***

mY+
Neue Frage »
Antworten »



Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »