Schaltjahr (leap year) Func

Moderators: Der Wanderer, Blackbird

Schaltjahr (leap year) Func

Postby hackball » 3. February 2019, 00:24

Der Sinn ist, man nimmt das übliche
date$(ndays)

und findet mit Months heraus, ob man Februar hat. Wenn man dann die Anzahl der Tage feststellen will,
gibt man + leapyear {year} ein, was einen Tag hinzufügt (oder eben nicht) für Februar.

Function.b leapyear{year.w}  ;returns 1 for leap year or 0
res.b=0
;divisible /100: not a leap year
dummy.w=(year/100)
If (dummy*100)=year
res=0
;divisible /400: leap year
dummy.w=(year/400)
If (dummy*400)=year Then res=1
Function Return res
EndIf
;divisible /4 : leap year
dummy.w=(year/4) :If (dummy*4)=year Then res=1 Else res=0
Function Return res
End Function

;testcase
NPrint "leap year test case:"
NPrint "1800 (no) ",leapyear{1800}
NPrint "1900 (no) ",leapyear{1900}
NPrint "2100 (no) ",leapyear{2100}

NPrint "2009 (no) ",leapyear{2009}
NPrint "2010 (no) ",leapyear{2010}
NPrint "2011 (no) ",leapyear{2011}

NPrint "2008 (ya) ",leapyear{2008}
NPrint "2012 (ya) ",leapyear{2012}
NPrint "2016 (ya) ",leapyear{2016}

NPrint "2000 (ya) ",leapyear{2000}
NPrint "2400 (ya) ",leapyear{2400}

Stop
Last edited by hackball on 3. February 2019, 00:33, edited 1 time in total.
Amiga. Just to let ya know....
User avatar
hackball
Master
 
Posts: 117
Joined: 1. September 2013, 20:21

Re: Schaltjahr (leap year) Func

Postby hackball » 3. February 2019, 00:29

Wie man sieht, wird hier ausgenutzt, daß ein Casting von Quick oder Float Resultaten nach Word immer den Int (Word) ergibt und demnach mit Div->Mult Teil geprüft wird, ob das Ergebnis ohne Rundungsfehler abgelaufen ist und dasselbe Resultat liefert.
Amiga. Just to let ya know....
User avatar
hackball
Master
 
Posts: 117
Joined: 1. September 2013, 20:21

Re: Schaltjahr (leap year) Func

Postby bruZard » 4. February 2019, 09:26

Hast Du gut gemacht ;)
bruZard
Site Admin
 
Posts: 73
Joined: 25. August 2013, 20:22


Return to Snippets & Libraries

Who is online

Users browsing this forum: No registered users and 0 guests

cron