Всех с прошедшей пасхой. Код (C): /*===================================================== Дата православной и католической пасхи. По формуле Карла Фридриха Гаусса (1777-1855). Календарь и хронология. Климишин И.А. 1990, стр. 133 (c) Intro v1.02 5.04.2019 11.04.2019 ======================================================*/ #include <stdio.h> #ifndef __cplusplus #define bool char #define true 1 #define false 0 #endif typedef unsigned char BYTE; typedef const char* LPCSTR; typedef struct _Sdate { char day; /* 1-31 */ char mon; /* 0-11 */ } Sdate; bool Str2Int(LPCSTR str, int* param) { int ppp, num, len; LPCSTR S0, S1; /* указатель на начало и конец строки */ bool minus = false; if(!str) return false; S1 = S0 = str; for(len=0; S1[1]; ++S1, ++len){ if(len>=4) return false; } if(*S0=='-'){ minus = true; ++S0; } if(S0>S1) return false; for(num=0, ppp=1; S1>=S0; --S1){ BYTE digit = *S1-'0'; if(digit>=10) return false; num += digit*ppp; ppp *= 10; }; *param = minus ? (-num) : num; return true; } int NewStyleDay(int year) /* Расхождение между новым и старым стилем, дней. */ { int century = year/100; return (century/4)*3 + century%4 - 2; } Sdate NumDay2Data(int day) /* номер дня от 1 марта в дату */ { Sdate date; int mon = 2;/* March */ if(day>31){ day -= 31; mon++; /* April */ } if(day>30){ day -= 30; mon++; /* May */ } date.day = day; date.mon = mon; return date; } int GetEasterGauss(int year, int m, int n, bool is_catholic) { int a,b,c,d,e,day; a = year % 19; b = year % 4; c = year % 7; d = (19*a + m) % 30; e = (2*b + 4*c + 6*d + n) % 7; day = 22 + d + e; if(is_catholic && (day>=56 && e==6)) day -= 7; return day; } int GetOrthodoxEaster(int year) /* православная пасха */ { return GetEasterGauss(year, 15, 6, false); } int GetCatholicEaster(int year) /* католическая пасха */ { int m,n,p,q,century; century = year/100; p = (century*8 + 13)/25; q = century/4; m = (century - p - q + 15) % 30; n = (century - q + 4) % 7; return GetEasterGauss(year, m, n, true); } int main(int argc, char *argv[]) { Sdate old_s, new_s; int year, day; if(argc!=2){ puts("Usage: easter year\n"); return 0; } if(!Str2Int(argv[1], &year)){ puts("ERROR! The integer is expected.\n"); return 1; } day = GetOrthodoxEaster(year); /* old style */ old_s = NumDay2Data(day); day += NewStyleDay(year); new_s = NumDay2Data(day); printf("Orthodox easter in %d:\n", year); printf("Old style: %2d.%02d New style: %2d.%02d\n", old_s.day, old_s.mon+1, new_s.day, new_s.mon+1); day = GetCatholicEaster(year); /* new style */ new_s = NumDay2Data(day); day -= NewStyleDay(year); old_s = NumDay2Data(day); printf("Catholic easter in %d:\n", year); printf("Old style: %2d.%02d New style: %2d.%02d\n", old_s.day, old_s.mon+1, new_s.day, new_s.mon+1); return 0; } Программка для расчёта даты пасхи, точно не знаю до какой даты вычисляется правильно, думаю до 3000 или 4000 года, при слишком большом значении, выдаёт ерунду. ЗЫ Рассчитано для компиляции и на старых системах, проверял на ТС1.0 эмулятор IBM XT dos5.
воистину воскрес! (хз конечно, ктонить видел такое? я вот в новостях читал что у чела до того пульс/давление просели, что его в холодильник в морге засунули, и он там очнулся через сутки. посчитали уехавшим, ну а потом патомы пошли под суд, потому как и на вскрытие забили да и потому что живого замёрзнуть попытались)
Как в церковь ходить, так они все аместисты, а как куличи на пасху жрать, так сразу "христос воскресе").
Спасибо, и вас так же. Что-то поздновато в этом году начальство васмовцев поздравило с пасхой. Я уж, было дело, обрадовался - подумал, что наконец-то на ВАСМе все потихоньку стали на правильный путь атеистов. Ан нет. Видимо, маловато Трешген убедительных доводов по этому вопросу пишет. Он вообще, мало чего полезного последнее время пишет - все больше бесполезного.