/*
 * Berechnung des Ostersonntages
 * Jens Mueller, 1996
 *
 * Algorithmus aus
 *    Werner: BASIC fuer Mikrorechner, VEB Verlag Technik,
 *    2. Auflage, Berlin 1987 (DDR), Seite 126
 */

#include <stdio.h>
#include <stdlib.h>


int  d[ 7 ] = {  11,  12,  13,  13,  14,  15,  16 };
int  m[ 7 ] = { 203, 203, 204, 204, 204, 205, 206 };
int  k[ 7 ] = {   0,   0,   1,   1,   1,   1,   0 };


main( argc, argv )
    int   argc;
    char *argv[];
{
    int  jahr, a, b, c, i, q, t;


    if (argc != 2)
    {
        printf( "usage: ostern jahr\n" );
        exit( -1 );
    }

    jahr = atoi( argv[ 1 ] );

    if ((jahr < 1700) || (jahr > 2399))
    {
        printf( "Berechnung nur fuer 1700 bis 2399 moeglich\n" );
        exit( -1 );
    }

    i = (jahr - 1700) / 100;
    q = jahr / 4;
    a = jahr % 19;
    b = m[ i ] - (11 * a);
    b %= 30;
    if (b >= 28)
        b -= k[ i ];
    c = jahr + q + b - d[ i ];
    c %= 7;
    t = 28 + b - c;
    printf( "Im Jahr %d faellt der Ostersonntag auf den ", jahr );
    if (t <= 31)
        printf( "%d. Maerz.\n", t );
    else
        printf( "%d. April.\n", t - 31 );
}

