Технический форум
Вернуться   Технический форум > Программирование > Форум программистов


Ответ
 
Опции темы Опции просмотра
Старый 25.02.2012, 11:58   #1 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию Определение даты Пасхи

Осуществил, наконец, давнюю задумку: составил программу расчета даты Пасхи в любом году. Определяются даты Православной (Orthodox), католической (Catholic) и еврейской (Jewish) Пасхи.
Очень это оказалось непростым делом: алгоритмов выложено много, но далеко не все правильные, многие с ошибками, а с учетом того, что создатели сайтов имеют обыкновение бездумно друг у друга копировать, то, сами понимаете... Ну вроде отладил. Если кому интересно, прошу протестировать и, буде ошибки вылезут, о том сообщить.
Ниже выложен исходник на Паскале и экзешник для DOS-моды. Если бы кто из Дельфийцев сделал из этого путный исполняемый файл под Windows, было бы совсем хорошо. Но это так, если есть желание.
Код:
Var
 Y,a,b,c,d,e,f,g,h,i,k,L,m,n,p,A1,M1,Date:LongInt;
 Month:String;
 Ksi,m2:Real;
Begin
 Write('Year = ');
 Readln(Y);
 Writeln;
 a:=(19*(Y mod 19)+15) mod 30;
 b:=(2*(Y mod 4)+4*(Y mod 7)+6*a+6) mod 7;
 If (a+b)>=10 then
  begin
   If a+b-9+13<31 then
    begin
     Month:='April';
     Date:=a+b-9+13;
    end
   else
    begin
     Month:='May';
     Date:=a+b-9+13-30;
    end;
  end
 else
  begin
   Month:='April';
   Date:=22+a+b+13-31;
  end;
 Writeln('Orthodox:');
 Writeln(Date:2,' of '+Month);
 Writeln;
 a:=Y mod 19;
 b:=Y div 100;
 c:=Y mod 100;
 d:=b div 4;
 e:=b mod 4;
 f:=(b+8) div 25;
 g:=(b-f+1) div 3;
 h:=(19*a+b-d-g+15) mod 30;
 i:=c div 4;
 k:=c mod 4;
 L:=(32+2*e+2*i-h-k) mod 7;
 m:=(a+11*h+22*L) div 451;
 n:=(h+L-7*m+114) div 31;
 p:=(h+L-7*m+114) mod 31;
 If n=3 then Month:='March' else Month:='April';
 Date:=p+1;
 Writeln('Catholic:');
 Writeln(Date:2,' of '+Month);
 Writeln;
 A1:=Y+3760;
 a:=(12*A1+17) mod 19;
 b:=A1 mod 4;
 Ksi:=32.0440933+1.5542418*a+0.25*b-0.00317779*A1;
 M1:=Trunc(Ksi);
 m2:=Ksi-1.0*M1;
 c:=(M1+3*A1+5*b+5) mod 7;
 If (c=1) and (a>b) and (m2>=0.63287037) then
  Date:=M1+1
 else
 If (c=2) or (c=4) or (c=6) or
 ((c=0) and (a>11) and (m2>=0.89772376)) then
  Date:=M1+1
 else Date:=M1;
 Inc(Date,13);
 If Date>31 then
  begin
   Month:='April';
   Dec(Date,31);
  end else Month:='March';
 Writeln('Jewish:');
 Writeln(Date:2,' of '+Month);
 Readln;
End.
Вложения
Тип файла: zip easter.zip (40.2 Кб, 55 просмотров)
Vladimir_S вне форума   Ответить с цитированием

Старый 25.02.2012, 11:58
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Рекомендую вам сразу пользоваться поиском схожих тем на форуме

Определение конденсаторов
Сбой даты и времени и ее последствия
Определение местоположения
Дорогие форумчане, с праздником Великой Пасхи!

Старый 27.02.2012, 23:39   #2 (permalink)
Алехандро
Member
 
Регистрация: 20.06.2011
Сообщений: 23
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 95
По умолчанию

Не плохо сделано... И главное весьма кстати, ведь скоро Пасха. Но я хотел поинтересоваться, не могли бы Вы подсказать мне какие-нибудь советы или книги или сайты для чайников по программированию(я хочу стать программистом)? Я буду Вам очень признателен если вы не откажете мне в помощи...Или возможно с вами как-то связяться , например по скайпу...
Алехандро вне форума   Ответить с цитированием
Старый 28.02.2012, 00:08   #3 (permalink)
kreol
Member
 
Аватар для kreol
 
Регистрация: 27.02.2010
Сообщений: 659
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 1312
По умолчанию

Цитата:
Сообщение от Vladimir_S Посмотреть сообщение
Если бы кто из Дельфийцев сделал из этого путный исполняемый файл под Windows, было бы совсем хорошо
Я могу попробовать. только чуть позже когда бует время. Но делать в lazarus е

Алехандро сначала следует определиться в какой сфере программирования хотите работать...
kreol вне форума   Ответить с цитированием
Старый 28.02.2012, 02:38   #4 (permalink)
kreol
Member
 
Аватар для kreol
 
Регистрация: 27.02.2010
Сообщений: 659
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 1312
По умолчанию

Решил не откладывать) правда практически использовал исходный код почти без изменения и оптимизации для лазаруса (дельфи)...
ниже приведен архив с полным проектом под лазарус (хотя скорее всего откроется и нормально откомпилируется и в дельфи)
также .exe файл был упакован upx
Вложения
Тип файла: zip Пасха.zip (792.9 Кб, 48 просмотров)
kreol вне форума   Ответить с цитированием
Старый 28.02.2012, 02:44   #5 (permalink)
кочевник
Member
 
Аватар для кочевник
 
Регистрация: 06.02.2011
Сообщений: 16,508
Сказал(а) спасибо: 1,116
Поблагодарили 1,940 раз(а) в 329 сообщениях
Репутация: 151418
По умолчанию

Цитата:
Сообщение от Vladimir_S Посмотреть сообщение
Православной (Orthodox), католической (Catholic) и еврейской (Jewish) Пасхи.
Предлагаю отмечать все!
кочевник вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 28.02.2012, 02:55   #6 (permalink)
Eli
TEHNARI.RU
 
Аватар для Eli
 
Регистрация: 31.03.2008
Адрес: Израиль
Сообщений: 18,407
Записей в дневнике: 7
Сказал(а) спасибо: 10
Поблагодарили 1 раз в 1 сообщении
Репутация: 14157
По умолчанию

Прикольно... жалко что он не дает второй раз поиск задать, выходить после первого запроса....

а то что в командной консоли открывает - имхо не мешает..

показывает точно и на этот год и на потом ( даже до 2080 года есть ) понятно дело что не покажет что праздник у евреев начинается вечером ( день до того) ... на пример - в 2012 году в апреле 6 вечером зайдет песах)
Eli вне форума   Ответить с цитированием
Старый 28.02.2012, 03:09   #7 (permalink)
Eli
TEHNARI.RU
 
Аватар для Eli
 
Регистрация: 31.03.2008
Адрес: Израиль
Сообщений: 18,407
Записей в дневнике: 7
Сказал(а) спасибо: 10
Поблагодарили 1 раз в 1 сообщении
Репутация: 14157
По умолчанию

прошу прощения ( просто ночь что и влияет уже на мышление... да и не успел исправить в самом посте сверху )

Цитата:
показывает точно и на этот год и на потом ( даже до 2080 года есть ) понятно дело что не покажет что праздник у евреев начинается вечером ( день до того) ... на пример - в 2012 году в апреле 6 вечером зайдет песах)
показывает точно( относительно) и на этот год и на потом ( даже до 2080 года есть ) кстати - Владимир - не знаю если ты знаешь, праздник у евреев начинается вечером ( день до того) ... на пример - в 2012 году в апреле 6 вечером зайдет песах)( в точности - вечер Песаха - что и есть начало Праздника.)

в программе просто, 7 числа... праздник показан у евреев...
Eli вне форума   Ответить с цитированием
Старый 28.02.2012, 11:19   #8 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от kreol Посмотреть сообщение
Решил не откладывать) правда практически использовал исходный код почти без изменения и оптимизации для лазаруса (дельфи)...
ниже приведен архив с полным проектом под лазарус (хотя скорее всего откроется и нормально откомпилируется и в дельфи)
также .exe файл был упакован upx
Пытался экзешник запустить - не хочет. Либо вовсе не запускается, либо что-то молниеносно упрыгивает за край экрана. ЧЯДНТ?
Vladimir_S вне форума   Ответить с цитированием
Старый 28.02.2012, 11:21   #9 (permalink)
Артём
votum separatum
 
Аватар для Артём
 
Регистрация: 05.05.2008
Сообщений: 14,603
Записей в дневнике: 52
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 18619
По умолчанию

А у меня прекрасно все запустилось и работает (я про экзешник Креола).
Артём вне форума   Ответить с цитированием
Старый 28.02.2012, 11:22   #10 (permalink)
Артём
votum separatum
 
Аватар для Артём
 
Регистрация: 05.05.2008
Сообщений: 14,603
Записей в дневнике: 52
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 18619
По умолчанию

XP Prof 32 бит - на всякий случай.
Артём вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 07:23.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.