Недавно добавленные исходники

•  DeLiKaTeS Tetris (Тетрис)  3 939

•  TDictionary Custom Sort  6 046

•  Fast Watermark Sources  5 848

•  3D Designer  8 668

•  Sik Screen Capture  6 171

•  Patch Maker  6 606

•  Айболит (remote control)  6 600

•  ListBox Drag & Drop  5 457

•  Доска для игры Реверси  95 424

•  Графические эффекты  6 808

•  Рисование по маске  5 999

•  Перетаскивание изображений  4 986

•  Canvas Drawing  5 355

•  Рисование Луны  5 081

•  Поворот изображения  4 619

•  Рисование стержней  3 274

•  Paint on Shape  2 516

•  Генератор кроссвордов  3 408

•  Головоломка Paletto  2 717

•  Теорема Монжа об окружностях  3 505

•  Пазл Numbrix  2 306

•  Заборы и коммивояжеры  2 994

•  Игра HIP  1 950

•  Игра Go (Го)  1 870

•  Симулятор лифта  2 219

•  Программа укладки плитки  1 935

•  Генератор лабиринта  2 373

•  Проверка числового ввода  2 060

•  HEX View  2 382

•  Физический маятник  2 015

 
скрыть

  Форум  

Delphi FAQ - Часто задаваемые вопросы

| Базы данных | Графика и Игры | Интернет и Сети | Компоненты и Классы | Мультимедиа |
| ОС и Железо | Программа и Интерфейс | Рабочий стол | Синтаксис | Технологии | Файловая система |



Delphi Sources

Вычисление даты Пасхи 2




function Easter(Year: Integer): TDateTime;
{----------------------------------------------------------------}
{ Вычисляет и возвращает день Пасхи определенного года.          }
{ Идея принадлежит Mark Lussier, AppVision <MLussier@best.com>.  }
{ Скорректировано для предотвращения переполнения целых, если по }
{ ошибке передан год с числом 6554 или более.                    }
{----------------------------------------------------------------}

var
  nMonth, nDay, nMoon, nEpact, nSunday,
    nGold, nCent, nCorx, nCorz: Integer;
begin
  { Номер Золотого Года в 19-летнем Metonic-цикле: }
  nGold := (Year mod 19) + 1;
  { Вычисляем столетие: }
  nCent := (Year div 100) + 1;
  { Количество лет, в течение которых отслеживаются високосные года... }
  { для синхронизации с движением солнца: }
  nCorx := (3 * nCent) div 4 - 12;
  { Специальная коррекция для синхронизации Пасхи с орбитой луны: }
  nCorz := (8 * nCent + 5) div 25 - 5;
  { Находим воскресенье: }
  nSunday := (Longint(5) * Year) div 4 - nCorx - 10;
  { ^ Предохраняем переполнение года за отметку 6554}
  { Устанавливаем Epact - определяем момент полной луны: }
  nEpact := (11 * nGold + 20 + nCorz - nCorx) mod 30;
  if nEpact < 0 then
    nEpact := nEpact + 30;
  if ((nEpact = 25) and (nGold > 11)) or (nEpact = 24) then
    nEpact := nEpact + 1;
  { Ищем полную луну: }
  nMoon := 44 - nEpact;
  if nMoon < 21 then
    nMoon := nMoon + 30;
  { Позиционируем на воскресенье: }
  nMoon := nMoon + 7 - ((nSunday + nMoon) mod 7);
  if nMoon > l 31 then
  begin
    nMonth := 4;
    nDay := nMoon - 31;
  end
  else
  begin
    nMonth := 3;
    nDay := nMoon;
  end;
  Easter := EncodeDate(Year, nMonth, nDay);
end; {Easter}





Похожие по теме исходники

Вычисление даты Пасхи




Copyright © 2004-2025 "Delphi Sources" by BrokenByte Software. Delphi World FAQ

Группа ВКонтакте