Hallo,
ich muss die Gaußsche Osterformel in C programmieren. Ich darf aber nur ein printf verwende. Ich weiß aber nicht wie ich das machen soll, denn Ostern kann ja auf März oder April fallen. Kann mir jemand weiterhelfen? Hier mein Ansatz (mit zwei printf).
#include
int ostern(int x)
{
int a = x%19;
int b = x%4;
int c = x%7;
int k = x/100;
int p = (8*k+13)/25;
int q = k/4;
int M = (15+k-p-q)%30;
int N = (4+k-q)%7;
int d = (19*a+M)%30;
int e = (2*b+4*c+6*d+N)%7;
if (d+e==35)
{
return 50;
} else if ((d==28) && (e==6) && ((11*M+11)%30
Du kannst den auszugebenden Monatsnamen zunächst in einer Zeichenketten-Variablen zwischenspeichern. Dieser lässt sich im Format-String mit dem Platzhalter %s einfügen. Ebenso solltest du den Oster-Monatstag auch an eine Variable übergeben, um von dieser dann 31 zu subtrahieren, falls das Datum im April liegt.
Allgemein sollten Variablennamen möglichst aussagekräftig gewählt werden, damit schon das Lesen des Quelltextes selbsterklärend wird – also besser tag=ostern(jahr) als y=ostern(x). Wer nach Jahren noch mal alte Quelltexte liest, weiß das zu schätzen…
Also ein knapper Hinweis auf sinnvolle Änderungen (unvollständig!):
int jahr, tag;
char *monat = „März“;
// …
tag = ostern(jahr);
if(tag > 31)
{
tag -= 31; // Kurzform von: tag = tag-31;
monat = „April“;
}
printf(„Im Jahr %d war Ostersonntag am %d. %s“,jahr, tag, monat);
Hallo,
dann leg doch für den Monat und den Tag auch jeweils eine Variable an die du innerhalb des if else füllst.
So hast du am Ende nur eine einzige printf Anweisung außerhalb der if else Anweisung (über return(0)).