Вс 4 11 18 25 Вс 2 9 16 23 30 .
Тогда для сохранения всех чисел или номеров дней одного месяца потребуется массив из семи строк (число дней недели) и шести колонок (см. Октябрь).
Если известно, на какой день недели (суббота) приходится первый день месяца, то мы знаем номер строки (6) и номер столбца (начинаем всегда со столбца 1) массива, где должно располагаться число 1. Остальные номера дней месяца располагаем последовательно после этого элемента ([6,1]) массива, перемещаясь вниз по столбцу. Число 2 помещаем в элемент с координатами [6,2]. Если столбец заполнен полностью, то переходим в начало следующего столбца, то есть заполняем элемент [1,2] числом 3. И так далее, пока все дни месяца не будут исчерпаны. Неиспользуемые элементы массива можно заполнить нулями, которые при выводе заменим пробелами.
Если выразить этот алгоритм на Паскале, то 1)определить координату первого дня месяца [Row,1], 2) выполнить цикл по дням месяца, внутри цикла записать очередной номер дня и определить координаты элемента для следующего дня месяца.
Номер дня недели (Row) определяется функцией DayWeek, текст которой приведен ниже.
function DayWeek (Day, Month, Year: integer): byte;
Var
DaysInYears,AllDays,DaysInMonths,Weeks: longint;
Begin
if Month < 3 then begin
Month:= Month+12;
Year:= Year-1;
end;
Month:= Month+1;
DaysInMonths:= Trunc(Month*30.6);
DaysInYears:= Trunc(Year*365.25);
AllDays:= DaysInMonths+DaysInYears+Day-114;
Weeks:= AllDays div 7;
DayWeek:= AllDays - Weeks*7;
end; { DayWeek }
Дата добавления: 2015-09-27 | Просмотры: 339 | Нарушение авторских прав
|