On-line: гостей 0. Всего: 0 [подробнее..]
АвторСообщение
администратор




Пост N: 8090
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 19.04.25 13:50. Заголовок: Get Date Пасха :)


Всем привет
Ни у кого не завалялся готовый алгоритм (Harbour)
определения дня пасхи по номеру года ?

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 8 [только новые]


moderator




Пост N: 2419
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 19.04.25 18:35. Заголовок: Dima пишет: готовый..


Dima пишет:

 цитата:
готовый алгоритм (Harbour)


Есть такой
Вот программа с использованием Минигуи.

Скрытый текст


Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 8091
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 19.04.25 18:50. Заголовок: Да работает :sm36: ..


Да работает
Пасиб

Начал было переводить алгоритм что в википедии ,сосед
позвонил , у него виски...вернулся а тут Григорий все выложил ))

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 4194
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 20.04.25 09:41. Заголовок: Давно сделал расчет ..


Давно сделал расчет по алгоритму из книги Климишина Календарь и хронология. Потом переписал расчет на C:

//Function Easter(nGod, lCatholic)
/* Расчет пасхи (c) Иван Антонович Климишин
Схема расчета даты католической пасхи выглядит так. Разделив сначала число года R на 19, 4 и 7,
получаем соответственно остатки a, b и с. Далее находим величину 19а + х делим ее на 30 и остаток обозначаем d.
После этого составляем сумму 2b + 4с + 6d + у и делим ее на 7, остаток обозначаем через е.
Пасха будет 22 + (d + е) марта н. ст. или, если d + e больше 10, (d + e) - 9 апреля н. ст.
Величины x и у равны соответственно
с 1582 по 1699 гг 22 и 2
с 1700 по 1799 гг 23 и 3
с 1800 по 1899 гг 23 и 4
с 1900 по 2099 гг 24 и 5
Расчет даты православной пасхи проводятся по той же схеме, но при постоянных значениях х=15 и у=6
Пределы здесь те же, что и в православной пасхалии - с 22 марта по 25 апреля (однако - нового стиля!).
При этом формулы предусматривают два исключения:
1) если (d + e) - 9 = 26 апреля,
то пасха переносится на 19 апреля (это относится к годам 1609, 1981, 2076 и 2133),
и 2) если d = 28 и е = 6, так что (d + e) - 9 = 25, то пасха переносится на 18 апреля
(такое случилось в 1954 г. и будет в 2049 и 2106 гг.).
*/
/*
Local nA, nB, nC, nD, nE, nX, nY
Local nDay, nMes

if lCatholic == nil .or. nGod < 1582
nX := 15
nY := 6
else
if nGod >= 1582 .and. nGod <= 1699
nX := 22
nY := 2
elseif nGod >= 1700 .and. nGod <= 1799
nX := 23
nY := 3
elseif nGod >= 1800 .and. nGod <= 1899
nX := 23
nY := 4
elseif nGod >= 1900 .and. nGod <= 2099
nX := 24
nY := 5
else
nX := nY := 0
endif
endif
nA := nGod % 19
nB := nGod % 4
nC := nGod % 7
nD := (19*nA + nX) % 30
nE := (2*nB + 4*nC + 6*nD + nY) % 7

if nD + nE < 10
nMes := 3
nDay := 22 + nD + nE
else
nMes := 4
nDay := nD + nE - 9
if nDay == 26
nDay := 19
elseif nD == 28 .and. nE == 6
nDay := 18
endif
endif
Return NTOD(nDay, nMes, nGod) + if(lCatholic == nil .and. nGod >= 1918, 13, 0)
*/

Function Trinity(nGod, lCatholic)
// Расчет троицы
Return Easter(nGod, lCatholic) + 49

#pragma BEGINDUMP

#include "hbapi.h"
#include "hbdate.h"

HB_FUNC( EASTER )
{
int iGod = hb_parni( 1 ), iDay, iMes;
HB_BOOL bCatholic = hb_parl( 2 );
int iA, iB, iC, iD, iE, iX, iY;
HB_LONG lDate;

if( ! bCatholic || iGod < 1582 )
{
iX = 15;
iY = 6;
}
// else if( iGod >= 1582 && iGod <= 1699 )
else if( iGod <= 1699 )
{
iX = 22;
iY = 2;
}
// else if( iGod >= 1700 && iGod <= 1799 )
else if( iGod <= 1799 )
{
iX = 23;
iY = 3;
}
// else if( iGod >= 1800 && iGod <= 1899 )
else if( iGod <= 1899 )
{
iX = 23;
iY = 4;
}
// else if( iGod >= 1900 && iGod <= 2099 )
else if( iGod <= 2099 )
{
iX = 24;
iY = 5;
}
else
iX = iY = 0;

iA = iGod % 19;
iB = iGod % 4;
iC = iGod % 7;
iD = (19*iA + iX) % 30;
iE = (2*iB + 4*iC + 6*iD + iY) % 7;

if( iD + iE < 10 )
{
iMes = 3;
iDay = 22 + iD + iE;
}
else
{
iMes = 4;
iDay = iD + iE - 9;
if( iDay == 26 )
iDay = 19;
else if( iD == 28 && iE == 6 )
iDay = 18;
}
lDate = hb_dateEncode( iGod, iMes, iDay );
if( ! bCatholic && iGod >= 1918 )
lDate += 13;

hb_retdl( lDate );
}

#pragma ENDDUMP

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 8092
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 20.04.25 12:35. Заголовок: Pasha Работает :sm..


Pasha
Работает
Pasha пишет:

 цитата:
NTOD


Не нашел такой , заменил на ctod(strzero(nday,2)+"."+strzero(nmes,2)+"."+strzero(ngod,4))
работает

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 8093
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 20.04.25 12:57. Заголовок: Нашел на просторах и..


Нашел на просторах инета , вроде пашет
 
#pragma BEGINDUMP

#include "hbapi.h"
#include "hbdate.h"

HB_FUNC( NTOD )
{
hb_retd( hb_parni( 3 ), hb_parni( 2 ), hb_parni( 1 ) );
}
#pragma ENDDUMP



Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 8094
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 20.04.25 13:16. Заголовок: Оказывается была так..


Оказывается была такая функция в contrib/hbclipsm
но потом contrib/hbclipsm убрали из Harbour

Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 2420
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 20.04.25 14:41. Заголовок: Dima пишет: Оказыва..


Dima пишет:

 цитата:
Оказывается была такая функция


Эту функцию добавили в ядро Harbour под именем HB_DATE(nD1, nM2, nY3)

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 8095
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 20.04.25 17:08. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:
Эту функцию добавили в ядро Harbour под именем HB_DATE(nD1, nM2, nY3)


Упс , я не видел , пасиб
В логе пишут про такой формат
Added HB_DATE( [<nYear>, <nMonth>, <nDay>] ) -> <dDate>
Проверил вместо NTOD , работает

Спасибо: 0 
ПрофильЦитата Ответить
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 17
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет