Nette kleine Routine zu Berechnung des Osterdatums:
Code:
/*
* Function : Osterberechnung (genau bis 8201) Algorithmus von GAUSS bei
* Aufruf ohne Jahr, wird das aktuelle verwendet Variablen: year - Jahr,
* welches Berechnet werden soll day - berechneter Tag (ostern)
* jetztjahr - wenn kein Jahr angegeben wurde Date : 14.05.97
* Update : 20.05.97 Aufruf ohne Parameter
*/
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
typedef int I;
typedef char C;
main(I u, C ** t)
{
I day, D, a, M, d, e, x, s, year;
struct tm jetztjahr;
time_t zeit; /* time_t ==> long */
if (u == 1) {
time(&zeit);
jetztjahr =* gmtime(&zeit);
year = jetztjahr.tm_year + 1900; /* ab 2000 Umstellung */
/*moeglich */
} else {
year = atoi(t[1]);
}
if (year >= 8202)
printf("Algorithmus versagt ---> genau bis 8201 !!!\n");
else {
/* Algorithmus */
a = year % 19;
x = year / 100;
s = x - (year / 400) - 2;
M = (15 + s - ((8 * x + 13) / 25 - 2)) % 30;
d = (M + 19 * a) % 30;
D = d == 29 ? 28 : ((d == 28 && a <= 11) ? 27 : d);
e = (2 * (year % 4) + 4 * (year % 7) + 6 * D + ((6 + s) % 7)) % 7;
day = D + e + 1;
if (day < 11)
printf("Ostern %d : %d. Maerz\n", year, 21 + day);
else
printf("Ostern %d : %d. April\n", year, day - 10);
}
}
0 commentaires:
Enregistrer un commentaire