Schaltjahr-Macros

Hier könnt Ihr gute, von Euch geschriebene Codes posten. Sie müssen auf jeden Fall funktionieren und sollten möglichst effizient, elegant und beispielhaft oder einfach nur cool sein.
Benutzeravatar
hardfalcon
Beiträge: 3447
Registriert: 29.08.2004 20:46

Schaltjahr-Macros

Beitrag von hardfalcon »

Ja, ich weiss, das ist für die meisten hier gefrorener Kaffee, aber es gibt halt trotzdem immer wieder mal Leute, die, wie ich, mathematisch minderbemittelt sind... :oops:

Code: Alles auswählen

Macro IsLeapYear(year)
((Not year%4) And (year%100) Or (Not year%400))
EndMacro


Debug "IsLeapYear(2007): "+Str(IsLeapYear(2007))
Debug "IsLeapYear(2008): "+Str(IsLeapYear(2008))
//EDIT: Vom julianischen auf den gregorianischen Kalender umgestellt (besser spät als nie :mrgreen: ), LastLeapYear() und NextLeapYear() reiche ich irgendwann mal nach, jetzt stehen Hausaufgaben auf dem Programm... :(
Zuletzt geändert von hardfalcon am 11.10.2007 17:46, insgesamt 1-mal geändert.
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag von AND51 »

Danke für die Snippets!

Aber ich hab mal ne Frage dazu: War es nicht so, dass boolsche Ausdrücke nicht in Termen unterstützt werden?

AFAIK wird

Code: Alles auswählen

a = 1

b = 3 + 2 + (a And 1)
Debug b
nicht unterstützt bzw. sollte nicht verwendet werden. Würde das dein IsLeapYear()-Makro nicht gefährlich machen?
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

das not führt einen boolcast durch, ist also insofern das "korrekte" workaround.

aber tatsächlich sind die funktionen unvollständig, denn ein schaltjahr ist nicht einfach jedes vierte jahr...
jedes durch 100 teilbare ist keines, aber durch 400 teilbar doch wieder.
also, 1900 war keines, 2000 war eines, 2100 wird keines sein.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
X0r
Beiträge: 2770
Registriert: 15.03.2007 21:47
Kontaktdaten:

Beitrag von X0r »

>jedes durch 100 teilbare ist keines, aber durch 400 teilbar doch wieder.

Welcher Physiker hat das erfunden? :mrgreen:
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8812
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Beitrag von NicTheQuick »

Hab neulich erst sowas gemacht, aber etwas erweitert. Findet ihr hier: Date-Funktionen
Benutzeravatar
hardfalcon
Beiträge: 3447
Registriert: 29.08.2004 20:46

Beitrag von hardfalcon »

Ich hab das eben auch mit Schrecken in der Wikipedia gelesen, dass meine Macros nur dem Julianischen Kalender entsprechend korrekt arbeiten, laut dem gregorianischen Kalender jedoch falsch sind...
Ich verweise also an dieser Stelle einfach mal stinkefaul, wie ich nunmal bin, auf den Thread, den NicTheQuick verlinkt hat... :mrgreen:
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

X0r hat geschrieben:>jedes durch 100 teilbare ist keines, aber durch 400 teilbar doch wieder.

Welcher Physiker hat das erfunden? :mrgreen:
erfunden hat es der, der die Erde erschaffen hat... Bild

die umsetzung ist lediglich eine korrekte interpretation der nachkommastellen bei den realen gegebenheiten...

vermutlich gibt es da noch mehr regeln dafür, wie jedes 2000ste doch wieder nicht und so...
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Antworten