ENG  RUSTimus Online Judge
Online Judge
Задачи
Авторы
Соревнования
О системе
Часто задаваемые вопросы
Новости сайта
Форум
Ссылки
Архив задач
Отправить на проверку
Состояние проверки
Руководство
Регистрация
Исправить данные
Рейтинг авторов
Текущее соревнование
Расписание
Прошедшие соревнования
Правила
вернуться в форум

Обсуждение задачи 1201. Какой сегодня день?

what's wrong in this code??????????!!!!!!!!!!!!!
Послано James 16 мар 2002 20:06
Program which_day_is_it;
 const
   month1:array[1..12] of byte=(31,28,31,30,31,30,31,31,30,31,30,31);
   week1:array[1..7] of string[3]=
('mon','tue','wed','thu','fri','sat','sun');
 var
   y,m,d:longint;
   i,j,k,l,yy,mm,dd,weekday1,days,last:longint;
   r:array[1..7,1..6] of longint;
   v:array[1..7] of longint;

Begin
  readln(d,m,y);
  weekday1:=5;
  for i:=1600 to y-1 do
   begin
     k:=0;
     if (i mod 400=0) or (i mod 100<>0) and (i mod 4=0) then k:=1;
     weekday1:=(weekday1+1+k) mod 7;
   end;
  inc(weekday1); if weekday1=7 then weekday1:=0;
  if (y mod 400=0) or (y mod 100<>0) and (y mod 4=0) then k:=1 else
k:=0;
  for i:=1 to m-1 do
   if i=2 then weekday1:=(weekday1+28+k) mod 7
    else weekday1:=(weekday1+month1[i]) mod 7;
  if weekday1=0 then weekday1:=7;
  if (y mod 400=0) or (y mod 100<>0) and (y mod 4=0) then k:=1 else
k:=0;
  days:=month1[m]; if m=2 then days:=days+k;
  fillchar(r,sizeof(r),0);
  fillchar(v,sizeof(v),0);
  r[weekday1,1]:=1; v[weekday1]:=1; j:=weekday1;
  for i:=1 to weekday1-1 do v[i]:=1;
  for i:=2 to days do
   begin
     inc(j); if j=8 then j:=1;
     inc(v[j]);
     r[j,v[j]]:=i;
   end;
  k:=0;
  for i:=1 to 7 do
   begin
     k:=0;
     write(week1[i]);
     for j:=1 to v[i] do
      if r[i,j]=0 then write('    ')
       else if r[i,j]=d then
             begin
               k:=1;
               if (r[7,j]>9) or (r[i,j]>9) then
                begin
                  if r[i,j]>9 then
                   write('  [',r[i,j],']')
                  else
                   write('   [',r[i,j],']');
                end
               else
                begin
                  if r[i,j]>9 then
                   write(' [',r[i,j],']')
                  else write('  [',r[i,j],']');
                end;
             end
        else if (r[7,j]>9) or (r[i,j]>9) then
              if k=1 then begin write(r[i,j]:4); k:=0; end
               else write(r[i,j]:5)
              else if k=1 then begin write(r[i,j]:3); k:=0; end
               else write(r[i,j]:4);
     writeln;
   end;
End.