/* Wann ist Ostern ? */ /* Nach einem Artikel der Physikalisch-Technischen Bundesanstalt */ /* Ausfuehrung in C, Werner Cirsovius, Februar 1999 */ #include int x; void datum(msg, val) char *msg; int val; { int mo; int da; printf("\n%s ist am ", msg); mo = 3; da = val; if (da > 31) { da -= 31; mo++; if (da > 30) { da -= 30; mo++; if (da > 31) { da -= 31; mo++; } } } printf("%2d.%2d.%4d", da, mo, x); } int main() { int k, l, m, s, a, d, r; int og, sz, oe, os; int ps, ch,fl; printf("\nDas Jahr eingeben bitte ... "); scanf("%d", &x); if ( x < 1583 ) /* julianischer Kalender */ { printf("\n Julianischer Kalender kann nicht berechnet werden!\n"); exit(-1); } else /* gregorianischer Kalender */ { k = x / 100; l = 3*(k + 1) / 4; m = 15 + l -((8 * k + 13) / 25); s = 2 - l; a = x % 19; d = (19 * a + m) % 30; r = (d / 29) + ((d / 28) - (d / 29)) * (a / 11); og = 21 + d - r; sz = 7 - (x + (x / 4) + s) % 7; oe = 7 - (og - sz) % 7; os = og + oe; ps = os + 49; ch = os + 39; fl = os + 60; datum(" Ostern", os); datum(" Pfingsten", ps); datum(" Himmelfahrt", ch); datum("Fronleichnam", fl); } return(0); }