vypocet dna v tyzdni
Jakub Ladman
ladmanj@volny.cz
Sobota Únor 23 01:39:51 CET 2008
Dne Thursday 21 February 2008 23:53:20 Jan Waclawek napsal(a):
> Tak som si dovolil male variacie na danu temu. Prva funkcia je vlastne ta
> povodna, druha je variacia na temu 366-dnovy rok (vratane gregorianskej
> korekcie), a tretia je modifikacia druhej tak, aby sa to dalo jednoducho
> implementovat v jednocipe. No a prikladam aj vzorovu implementaciu v '51,
> ale len pre toto storocie. Oboje ma ako "main" test, ktory testuje den za
> dnom.
>
> Prijemne (po)citanie! :-)
Taky se pridam se svou troskou do mlyna, kdyz uz jsem to cele spustil.
Bez zaruky spravnosti pres cely interval vstupnich hodnot, pres samou praci
nebyl cas, ale zda se to funkcni. Je to pouze pro soucasne stoleti, minule uz
nebude a pristiho se ten muj bastl nedozije.
Jakub Ladman
const unsigned char monthtable[] PROGMEM = {6,2,2,5,7,3,5,1,4,6,2,4};
unsigned char wd(volatile datetime *date){
unsigned char wd;
wd = date->year + 3;
wd += (wd/4);
wd +=
pgm_read_byte( &(
monthtable[ date->month - 1 ]
) );
if(!(date->year%4)&&(date->month>2)) wd++;
wd += date->day;
wd += 2;
wd %= 7;
return wd;
}
tady je jeste ten typ
typedef struct{
unsigned char year :7;
unsigned char month :4;
unsigned char day :6;
unsigned char week_day :3;
unsigned char hour :5;
unsigned char minute :6;
unsigned char second :6;
unsigned char sync :1;
} datetime;
Další informace o konferenci Hw-list