Как-то криво работает, не пойму почему. Ближайшие даты определяет нормально. А дальше - косяки.
спойлер (Отобразить)
messagebox(Date(15, 9, 2019)); //воскресениье
function Date(int D, int M, int Y)
{
int a, y, m, R;
a = ( 14 - M ) / 12;
y = Y - a;
m = M + 12 * a - 2;
R = 7000 + ( D + y + y / 4 - y / 100 + y / 400 + (31 * m) / 12 );
R=mod(R, 7);
if(R==0) return "субота";
if(R==1) return "воскресение";
if(R==2) return "понедельник";
if(R==3) return "вторник";
if(R==4) return "среда";
if(R==5) return "четверг";
if(R==6) return "пятница";
return "-1";
}
function mod(int a, int b)
{
int q,r;
q=a/b;
r=a-b*q;
return r;
}
|