Скажем, Джон, его юбилей точно на Пасху.Джонни, его годовщина - это всегда неделя после пасхи.А у Елены ее юбилей за неделю до Пятидесятницы (42 дня после Пасхи).
Как мне с помощью сценария оболочки вычислить день (число и название дня) и месяц их дня рождения.На все последующие годы.
Я знаю, что могу вычислить день Пасхи с ncal -e "year"
.В C то, что я сделал:
typedef struct {
int day;
int month;
int year;
} Date;
Затем я вычисляю день Пасхи (с помощью алгоритма Гаусса).И верните день, месяц, год в функцию пятидесятницы, которая принимает день + 49, уменьшает день и увеличивает месяц.
Таким образом:
- Как в оболочке преобразовать вывод
ncal -e
из «1 января 2019 года» в «1 1 2019» только с оболочкой. - Если бы у меня было это, как бы вы начали создавать правила для истории выше.(На дни рождения)
Date easter(int Y)
{
Date date;
int C = floor(Y/100);
int N = Y - 19*floor(Y/19);
int K = floor((C - 17)/25);
int I = C - floor(C/4) - floor((C - K)/3) + 19*N + 15;
I = I - 30*floor((I/30));
I = I - floor(I/28)*(1 - floor(I/28)*floor(29/(I + 1))*floor((21 - N)/11));
int J = Y + floor(Y/4) + I + 2 - C + floor(C/4);
J = J - 7*floor(J/7);
int L = I - J;
int M = 3 + floor((L + 40)/44);
int D = L + 28 - 31*floor(M/4);
date.d = D;
date.m = M;
date.y = Y;
return date;
}