Вычислить день недели по дате - Free Pascal
Формулировка задачи:
написать прогу на тему вычисления дня недели по дате. я чет написал (пенками и по книге) и не могу исправить один косяк... она у меня работает только с 1000 года. а в условии у меня начало отсчета 1,1,1г.
Решение задачи: «Вычислить день недели по дате»
textual
Листинг программы
Var DAYS : array[1..12] of integer; DAYOFWEEK : array[0..6] of string; cd , cm , cy , cdof , d , m , y : integer; Function isLeap(y : integer) :boolean; Begin isLeap := (y mod 400 = 0) or ((y mod 100 <> 0) and (y mod 4 = 0)); End; Begin DAYS[1] := 31; DAYS[2] := 28; DAYS[3] := 31; DAYS[4] := 30; DAYS[5] := 31; DAYS[6] := 30; DAYS[7] := 31; DAYS[8] := 31; DAYS[9] := 30; DAYS[10] := 31; DAYS[11] := 30; DAYS[12] := 31; Write('День: '); read(d); Write('Месяц: '); read(m); Write('Год: '); read(y); cd := 1; cm := 1; cy := 1; cdof := 0; while true do begin if (cd = d) and (cm = m) and (cy = y) then break; cd := cd + 1; cdof := (cdof + 1) mod 7; if cd > DAYS[cm] then begin cd := 1; cm := cm + 1; if cm > 12 then begin cm := 1; cy := cy + 1; if isLeap(cy) then DAYS[2] := 29 else DAYS[2] := 28; end; end; end; DAYOFWEEK[0] := 'Понедельник'; DAYOFWEEK[1] := 'Вторник'; DAYOFWEEK[2] := 'Среда'; DAYOFWEEK[3] := 'Четверг'; DAYOFWEEK[4] := 'Пятница'; DAYOFWEEK[5] := 'Суббота'; DAYOFWEEK[6] := 'Воскресение'; WriteLn(DAYOFWEEK[cdof]); ReadLn; ReadLn; End.
Объяснение кода листинга программы
- В коде используется два массива: DAYS и DAYOFWEEK.
- Массив DAYS содержит количество дней в каждом месяце.
- Массив DAYOFWEEK содержит названия дней недели.
- В функции isLeap проверяется является ли год високосным.
- В основном цикле программы происходит проверка введенных пользователем даты.
- Если введенные числа совпадают с текущими числами, то цикл прерывается.
- Если текущий месяц больше 12, то происходит смена месяца и года.
- Если год високосный, то количество дней во втором месяце увеличивается на один.
- По завершению цикла, выводится название дня недели.
- Программа ожидает ввода пользователя для продолжения.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д