then - funkcja warunkowa
Często wzór Zellera jest podawany w formie, w której występuje wartość 2*C zamiast 5*C, która to forma prowadzi jednak przy niektórych latach do wartości N - ujemnych oraz nie sprawdza się dla niektórych dat.
Implementacja w C Funkcja napisana w C na podstawie algorytmu Zellera: char* week={"Niedziela","Poniedzialek","Wtorek","Sroda","Czwartek","Piatek","Sobota"}; int zeller(int d, int m, int y, int gr){ int Y,C,M,N,D; M=1+(9+m)%12; Y=y-(M>10); C=Y/100; D=Y%100; if (gr==1) N=((13*M-1)/5+D+D/4+C/4+5*C+d)%7; else N=((13*M-1)/5+D+D/4+6*C+d+5)%7; return (7+N)%7; } Funkcja zwraca indeks do tablicy „week” (0 dla niedzieli). Parametr „gr” oznacza rodzaj kalendarza: gr=1 dla gregoriańskiego, gr≠1 dla juliańskiego. Inny algorytm (z tym samym efektem) na podstawie analizy tablic zamieszczonych w Małej Encyklopedii Powszechnej PWN z 1959 r. char* week={"Niedziela","Poniedzialek","Wtorek","Sroda","Czwartek","Piatek","Sobota"}; int dow(int d, int m, int y, int gr) { int mon={0,1,1,2,5,6,2,3,4,0,1,4}; int leap; int a,b,c; leap=(gr!=1&&y%4==0||gr==1&&(y%4==0&&y%100!=0||y%400==0)); a=(y%100)%28; b=(gr!=1)*(4+(y%700)/100+2*(a/4)+6*((!leap)*(1+(a%4))+(leap)*((9+m)/12)))%7+ (gr==1)*(2*(1+(y%400)/100+(a/4))+6*((!leap)*(1+(a%4))+(leap)*((9+m)/12)))%7; c=(3*mon[m-1]+d)%7; return (c+6*b)%7; }