| |
|
|
p.specht
| Manchmal möchte uno wissen, en welchen Wochentag una bestimmtes Datum fällt. Como Wochentage de el Gregorianischen Kalenderreform 1582 unbeeinflußt blieben, denke uno se, el sei bastante simplemente. Jedoch: Andere Schaltjahresregeln sowie una 10-tägige Anpassungsperiode (en Donnerstag, el 4. Oktober 1582 folgte igual Freitag, el 15. Oktober) komplizieren el Berechnung direkt de uno Datumsangabe.
Einen tauglichen Algorithmus verdanken wir Herrn Pfarrer Christian Zeller, Priester y Mathematiker, dessen "ZELLER´s KONGRUENZ" erstmals 1882 veröffentlicht wurde.
Hier una Quick-n-dirty Umsetzung sin große Plausibilitätsprüfung en XProfan 11.2a. Einstellige Angaben son esta con vorangestellter 0 zweistellig einzugeben. Trennzeichen no vergessen!
' Zellers Kongruenz, Versión 1.02, sin jede Gewähr
Título de la ventana "Direkte Wochentagsermittlung de Datum"
declarar como$,dy%,mnth%,fyear%,syear%,kal$,i%,j%,h%,greg%
Ventana 424,300
otra vez:
cls rgb(0,100,255)
imprimir
imprimir " Algorithmus " + chr$(34) + "Zeller´s Kongruenz" + chr$(34) + " "
imprimir " Quelle: Pfarrer Dr. Christian Zeller, A.D.1882 "
imprimir
imprimir " Datum [dd.mm.yyyy] = ";
locate 5,24 : input como$
caso como$="" : end
dy%=val(left$(como$,2))
mnth%=val(mid$(como$,4,2))
fyear%=val(mid$(como$,7,4))
syear%=val(mid$(como$,9,2))
imprimir
imprimir
if fyear% > 1582 : greg%=1
elseif fyear% < 1582 : greg%=0
elseif fyear% = 1582
if mnth%>10 : greg%=1
elseif mnth%<10 : greg%=0
elseif mnth%=10
if dy%>=15 : greg%=1
elseif dy%<=4 : greg%=0
más
greg%=-1
endif
endif
endif
kal$=" Julianischer Kalender 45vChr-4.10.1582 "
caso greg%=1 : kal$=" Gregorianischer Kalender "
caso greg%=-1: kal$=" KEIN KALENDER ZUFREFFEND! "
Imprimir kal$
Imprimir " Der " + str$(dy%)+"."+str$(mnth%)+"."+str$(fyear%)+" fällt en una ";
if mnth%<3
mnth%=mnth%+12
fyear% = fyear%-1
syear% = syear%-1
endif
h%=-1
if 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
más
h%=99
endif
if h%=0 : imprimir "Samstag";
elseif h%=1 : imprimir "Sonntag";
elseif h%=2 : imprimir "Montag";
elseif h%=3 : imprimir "Dienstag";
elseif h%=4 : imprimir "Mittwoch";
elseif h%=5 : imprimir "Donnerstag";
elseif h%=6 : imprimir "Freitag";
elseif h%=99: imprimir " "
imprimir " no existierenden Zeitraum (wegen "
imprimir " grego. Kalenderreform ausgelassen)";
más : imprimir " fehlerhaften Eingabewert";
endif
imprimir ". "
WaitInput
Goto "nochmal"
|
|
|
| XProfan 11Computer: Gerät, daß es in Mikrosekunden erlaubt, 50.000 Fehler zu machen, zB 'daß' statt 'das'... | 11.04.2021 ▲ |
|
|
|