| |
|
|
p.specht
| quelquefois voudrais on savons, sur welchen Wochentag un bestimmtes date fällt. là Wochentage de qui Gregorianischen Kalenderreform 1582 unbeeinflußt blieben, denke on sich, cela sei droite simple. cependant: autre Schaltjahresregeln sowie une 10-tägige Anpassungsperiode (sur jeudi, den 4. octobre 1582 folgte juste vendredi, qui 15. octobre) komplizieren qui Berechnung direct aus einer Datumsangabe.
Einen tauglichen Algorithmus verdanken wir Herrn curé Christian Zeller, praître et Mathematiker, dessen "ZELLER´s KONGRUENZ" erstmals 1882 veröffentlicht wurde.
ici une Quick-n-dirty Umsetzung sans grand Plausibilitätsprüfung dans XProfan 11.2a. Einstellige Angaben sommes dabei avec vorangestellter 0 zweistellig einzugeben. Trennzeichen pas oublier qc!
' Zellers Kongruenz, Version 1.02, sans chacun Gewähr
Titre de la fenêtre "Direkte Wochentagsermittlung aus Datum"
declare là$,dy%,mnth%,fyear%,syear%,kal$,i%,j%,h%,greg%
Fenêtre 424,300
nochmal:
cls rgb(0,100,255)
imprimer
imprimer " Algorithmus " + chr$(34) + "Zeller´s Kongruenz" + chr$(34) + " "
imprimer " source: curé Dr. Christian Zeller, A.D.1882 "
imprimer
imprimer " date [dd.mm.yyyy] = ";
locate 5,24 : input là$
cas là$=» : end
dy%=val(left$(là$,2))
mnth%=val(mid$(là$,4,2))
fyear%=val(mid$(là$,7,4))
syear%=val(mid$(là$,9,2))
imprimer
imprimer
si fyear% > 1582 : greg%=1
elseif fyear% < 1582 : greg%=0
elseif fyear% = 1582
si mnth%>10 : greg%=1
elseif mnth%<10 : greg%=0
elseif mnth%=10
si dy%>=15 : greg%=1
elseif dy%<=4 : greg%=0
d'autre
greg%=-1
endif
endif
endif
kal$=" Julianischer le calendrier 45vChr-4.10.1582 "
cas greg%=1 : kal$=" Gregorianischer le calendrier "
cas greg%=-1: kal$=" KEIN KALENDER ZUFREFFEND! "
Imprimer kal$
Imprimer " qui " + str$(dy%)+"."+str$(mnth%)+"."+str$(fyear%)+" fällt sur une ";
si mnth%<3
mnth%=mnth%+12
fyear% = fyear%-1
syear% = syear%-1
endif
h%=-1
si greg%=1
h%=(dy%+int((mnth%+1)*26/10)+syear%+int(syear%/4)+int( int(fyear%/100) /4) + 5*int(fyear%/100) ) mod 7
elseif greg%=0
h%=(dy%+int((mnth%+1)*26/10)+syear%+int(syear%/4)+ 5 + 6* int(fyear%/100) ) mod 7
d'autre
h%=99
endif
si h%=0 : imprimer "Samstag";
elseif h%=1 : imprimer "Sonntag";
elseif h%=2 : imprimer "Montag";
elseif h%=3 : imprimer "Dienstag";
elseif h%=4 : imprimer "Mittwoch";
elseif h%=5 : imprimer "Donnerstag";
elseif h%=6 : imprimer "Freitag";
elseif h%=99: imprimer " "
imprimer " pas existierenden la période (à cause de "
imprimer " grego. Kalenderreform ausgelassen)";
d'autre : imprimer " fehlerhaften Eingabewert";
endif
imprimer ". "
WaitInput
Goto "nochmal"
|
|
|
| XProfan 11Computer: Gerät, daß es in Mikrosekunden erlaubt, 50.000 Fehler zu machen, zB 'daß' statt 'das'... | 11.04.2021 ▲ |
|
|
|