ostern.c

jeudi 17 mars 2016

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

 

Lorem

Ipsum

Dolor