Код:
program dae;
var
  g1,g2,m1,m2,d1,d2,n:longint;
  day:byte;
const
  Cm: array[3..14] of integer=(0,31,61,92,122,153,184,214,245,275,306,337);
begin
  writeln('enter data: d m g');
  readln(d2,m2,g2);
  d1:=29;m1:=12;g1:=2008; 
  {29 декабря 2008 был ПН. т.е. = 0(mod 7)}
  
  {делаем март первым месяцем}
  if m1<=2 then
  begin
    m1:=m1+12;
    g1:=g1-1;
  end;
  if m2<=2 then
  begin
    m2:=m2+12;
    g2:=g2-1;
  end;
  n:=(g2-g1)*365+((g2 div 4)-(g1 div 4))+Cm[m2]-Cm[m1]+d2-d1;
  {n=разность между введенной датой и известной}
  if n<0 then
  begin
    n:=-n;
    day:=(n mod 7);
    if day<>0 then day:=7-day;
  end
  else
    day:=(n mod 7);
  case day of
    0:writeln('day=pn');
    1:writeln('day=vt');
    2:writeln('day=sr');
    3:writeln('day=cht');
    4:writeln('day=pt');
    5:writeln('day=sb');
    6:writeln('day=vs');
  end;
  readln;
end.
Проверял по календарю -выдает неправильный ответ. Где ошибка? 
