vypocet dna v tyzdni

Jan Waclawek konfera@efton.sk
Pátek Únor 22 08:42:14 CET 2008


>ALGORITHM 1:  DATE to DAY NUMBER
>--------------------------------
>Takes a date in the form of year, month and day of month and calculates
>its day number.  Valid from 1582 onwards:
>
>D0 = -722528:   REM For AMSAT day number        )
>D0 =    -428:   REM For GENERAL day number      )) CHOOSE ONE ONLY
>D0 = 1720982:   REM For Julian Day at noon      )
>
>REM Enter wih Year YR e.g. 1986, Month MN, Day DY. Result is Day Number DN
>Y = YR: M = MN: D = DY:                 REM Preserve YR, MN, DY
>IF M <= 2 THEN M = M+12: Y = Y-1
>DN = -INT(Y/100)+INT(Y/400)+15  + INT(Y*365.25) + INT((M+1)*30.6) + D + D0
>
>NOTES:
>1. You may omit the century calculations so that:
>        DN = INT(Y*365.25) + INT((M+1)*30.6) + D + D0
>   This restricts the algorithm to  1900 Mar 01 until 2100 Feb 28.
>
>Za bazik se omlouvam, ale transkripci do toho ktereho programovaciho jazyka
>jiste zvladne kazdy :-). Sice obsahuje operace ve floatech, ale vhodnymi
>manipulacemi s desetinnou teckou by nebyl problem je prevest vsechny na INT.


Dakujem. Je to nadhera.

Mno ten float praveze JE problem, pretoze tie desatiny po "prevedeni na INT" sposobia, ze treba robit MOD, co je u jednocipov obvykle pomerne nakladna operacia. Este ten MOD 4 kvoli priestupnemu roku sa da :-) ale ten vypocet poctu dni v mesiaci je dost problem - myslim si, ze v pripade jednocipu je tabulka adekvatnejsia. Tomum MOD7 na konci sa zrejme vyhnut neda (tento programcek sa mu elegantne vyhol tym, ze v skutocnosti nepocita den v tyzdni ale pocet dni od fixneho datumu :-) )

Inak je to nadherna ukazka toho, ako dostupne prostriedky ovplyvnia volbu algoritmu. Je to sice v malom, ale to je prave to dobre na didakticke ucely.

wek


PS. Poprosim Vas, odmazavajte konce mailov, najma ked su velke a nerelevantne. Dakujem.



Další informace o konferenci Hw-list