PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Ostern - C Programmierung


nobody
17.11.2003, 14:31
Ich hab ne aufgabe bekommen und weiss net mehr weiter, kann mir vielleicht einer helfen. Zu meiner entschuldigung das ist erst meine 2. C-Programmierung und bin sehr weit am anfang.

Undzwar geht es um dieses thema:
Schreibe Sie ein C-Programm, welches ein einzugebendes Ortsdatum im Zeitraum von 2000- 2015 berechnet und ausgibt.
Ostern ist am ersten Sonntag nach dem ersten Vollmond nach Frühlingsanfang.

Die Berechnung erfolgt nach folgender Regel:
- Y sei das jahr, für das das Osterdatum gewünscht wird.
- G ist die sogenannte goldene Zahl des Jahres G = (Ymod19)+1
- C ist die Nummer des Jahrhunderts, z.B. 1987 ist im 20 Jahrhundert.
C = INT (Y/100) +1
- X ist die Anzahl von Jahren, in dennen wie in 1900 das Schaltjahr
weggelassenn wurde, um mit der Sonne im Takt zu bleiben.
- Z ist eine Korrektur, um Ostern mit der Mondumdrehung zu
synchronisieren.
- Der ((-D)mod7)-te März ist ein Sonntag. D =INT(5*Y/4)-X-10
- wenn E neg., dann erhöhe E um 30; Wenn (E=25 und Gleichzeitig
G > 11) oder wenn (E=24), dann erhöhe E um 1. (E ist der sogennante
Epact, der das Datum einer Vollmondes bestimmt. E muß als pos. rest
berechnet werden, selbst wenn der Ausdruck in der Klammer neg. sein
sollte.)
- E = (11*G+20+Z-X)mod30
- N = 44-E
- Wenn N<21, dann erhöhe um 30. (Das Datum des ersten Kalender-
Vollmonds nach dem 21.März. Der astronomische Vollmond kann leicht
abweischen.
- Der nächste Sonntag nac dem Vollmonddatum.
N = N+7- ((D+N)mod7)
- Wenn N>31, dann ist Ostern am (N-31)-ten April, sonst ist Ostern am
N-ten März.


Für Tipps wäre ich sehr dankbar.

mfg
Der_Neue

nobody
17.11.2003, 14:34
Das ist die lösung die ich erarbeitet hab, die ist aber leider falsch ich weiss nur net warum.
Zur kontrolle:
Wenn man das Jahr 2000 eingibt muss als datum 23.4.2000 raus kommen, bzw. 5.4.2015.


#include < stdio.h>
#include < math.h>

int main ()
{
int year = 0;
int G = 0;
int C = 0;
int X = 0;
int Z = 0;
int D = 0;
int E = 0;
int N = 0;

printf ("\n blub \n WI1016 \n Martikel Nr.: 1111111 1 3");
printf ("\n\n\n Das ist ein Programm zum ermitteln der Ostertage zwischen den Jahren 2000-2015.");

printf ("\n\n\n Bitte geben Sie das Jahr ein: ");
scanf ("%i", &year);
if (year<2000)
{
printf (" Bitte geben Sie eine Zahl zwischen 2000 und 2015 ein: ");
scanf ("%i", &year);
}
if (year>2015)
{
printf (" Bitte geben Sie eine Zahl zwischen 2000 und 2015 ein: ");
scanf ("%i", &year);
}

G = (year%19) +1;
C = (year / 100) +1;
X = (3*C/4) -12;
Z = ((8*C+5) /25) -5;
D = (5*year/4) -X-10;
E = (11*G+20+Z-X)%30;

if (E<0)
{
E = E + 30;
}
if (E=24)
{
E = E +1;
}
if (E=25)
{
E = E +1;
}
if (G>11)
{
E = E +1;
}

N = 44 - E;

if (N<21)
{
N=44-E+30;
}

N = N+7-((D+N)%7);

if (N>31)
{
N = N-31;
printf ("Ostern ist am: %i.05.%i",N,year);
}
else printf ("Ostern ist am %i.04.%i",N,year);

return 0;
}




net das ihr denkt ich warte nur auf ne lösung von euch :D :D .

nochmals danke im vorraus.

upsidedown
17.11.2003, 16:17
Für code-Fragmente ist das [CODE]-tag da, ansonsten ist das ziemlich unleserlich alles.

Und bitte versuch in Zukunft etwas aussagekräftigere Überschriften zu wählen.