Описать функцию подсчитывающую сколько дней прошло от первого января 2005 года до даты d этого года. - Turbo Pascal

Узнай цену своей работы

Формулировка задачи:

Дан массив записи, представляющий собой календарь(число,месяц,год). Описать функцию подсчитывающую сколько дней прошло от первого января 2005 года до даты d этого года.

Решение задачи: «Описать функцию подсчитывающую сколько дней прошло от первого января 2005 года до даты d этого года.»

textual
Листинг программы
function Julian(y, m, d: Integer): Longint;
begin
  if m>2 then Dec(m,3)
  else begin
    Inc(m,9); Dec(y);
  end;
  Julian:=
    146097*(y div 100) div 4 +
    1461  *(y mod 100) div 4 +
    (153*m+2) div 5+d+1721119;
end;
type
  TDate = record
    d, m: ShortInt; y: Integer;
  end;
var
  d: array [1..5] of TDate;
  i: Integer; d0: Longint;
begin
  d0:=Julian(2005,1,1);
  WriteLn('Введите даты в виде ДД ММ ГГГГ (',High(d)-Low(d)+1,'):');
  for i:=Low(d) to High(d) do with d[i] do Read(d,m,y);
  WriteLn('От 01.01.2015:');
  for i:=Low(d) to High(d) do with d[i] do WriteLn(d:2,'.',m:2,'.',y:4,' : ',Julian(y,m,d)-d0);
end.

Объяснение кода листинга программы

  1. Функция Julian принимает три параметра: y (год), m (месяц) и d (день). Она вычисляет количество дней между первым января указанного года и указанной датой.
  2. Если m больше 2, то функция увеличивает месяц на 3. В противном случае, она увеличивает год на 1 и уменьшает месяц на 9.
  3. Функция возвращает сумму: 146097 (год / 100) / 4 + 1461 (год % 100) / 4 + (153 * месяц + 2) / 5 + день + 1721119.
  4. Тип TDate представляет собой запись с полями: d (день), m (месяц) и y (год).
  5. Переменная d представляет собой массив из 5 записей типа TDate.
  6. Переменная i является счетчиком для цикла, который будет использоваться для чтения дат.
  7. Переменная d0 инициализируется значением функции Julian(2005,1,1).
  8. Выводится приглашение пользователю ввести даты в виде ДД ММ ГГГГ.
  9. Для каждой записи в массиве d считывается год, месяц и день из ввода пользователя.
  10. Выводится сообщение с датой и разницей в днях до указанной даты.
  11. Цикл завершается, когда пользователь вводит некорректные данные или достигает конца массива d.

Оцени полезность:

6   голосов , оценка 3.5 из 5
Похожие ответы