/*********************************************************************
*
* Aufgabe 407d
*
* Die main-Funktion ist bereits vorgegeben. Lassen Sie diese bitte
* unbedingt unverndert. Implementieren Sie vielmehr die vier
* Funktionen datumEinlesen, tageDurchJahr, tageDurchMonat und
* istSchaltjahr, deren Gerst unten bereits vorgegeben ist. Beachten
* Sie bitte die Kommentare, die vor jeder Funktion deren Aufgabe
* erklren.
*
* Lassen Sie das vorgegebene Grundgerst unverndert. Behalten Sie
* insbesondere die Funktionsdefinitionen und deren Reihenfolge
* bei. Lesen Sie auch die Hinweise auf dem Arbeitsblatt, ehe Sie
* diese Aufgabe bearbeiten.
*
*********************************************************************/
#include <stdio.h>
/* Feld zur Zuordnung zwischen der Nummer eines Wochentags und dessen
Namen (Zeichenfolge) */
const char *wochentage[7] = {
"Sonntag",
"Montag",
"Dienstag",
"Mittwoch",
"Donnerstag",
"Freitag",
"Samstag"
};
/* Feld zur Zuordnung zwischen der Nummer eines Monats und der Anzahl
der Tage in diesem Monat */
const int monatstage[13] =
{0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
/*
* Vorwrtsdeklarationen von Funktionen
*/
int datumEinlesen(int *jahr, int *monat, int *tag);
int tageDurchJahr(int jahr);
int tageDurchMonat(int monat, int jahr);
int main()
{
int jahr=0, monat=0, tag=0; /* Eingegebenes Datum */
int tage = 0; /* Tage die seit dem 1.1.0 vergangen sind */
/*
* Abfragen des Datums
*/
if (!datumEinlesen(&jahr, &monat, &tag)) {
return 1;
}
/*
* Berechnung der seit dem 1.1.0 vergangenen Tage
*/
tage = tageDurchJahr(jahr);
tage += tageDurchMonat(monat, jahr);
tage += tag - 1; /* Anzahl der Tage durch die Tagesangabe */
/*
* Ausgabe des Wochentags
*/
printf("Der %02i.%02i.%i ist ein %s.\n",
tag, monat, jahr, wochentage[tage%7]);
return 0;
}
/*
* datumEinlesen
*
* Diese Funktion liest das Datum ein und speichert die Eingabe in den
* mit jahr, monat und tag referenzierten Variablen. War die Eingabe
* des Benutzers korrekt, gibt die Funktion 1 (wahr) zurck. Macht der
* Benutzer eine falsche Eingabe (z.B. 29.2.2001 oder Monat > 12),
* dann bricht die Funktion sofort ab und gibt 0 (falsch) zurck.
*/
int datumEinlesen(int *jahr, int *monat, int *tag)
{
}
/*
* tageDurchJahr
*
* Diese Funktion gibt die Anzahl der Tage zurck, die seit dem 1.1.0
* bis zum Ende des Jahres vor der Jahresangabe jahr vergangen sind,
* also die Anzahl an Tagen, die allein sich dadurch ergibt das man die
* Jahreszahl angibt.
*/
int tageDurchJahr(int jahr)
{
}
/*
* tageDurchMonat
*
* Diese Funktion gibt die Anzahl der Tage zurck, die im Jahr jahr
* seit Jahresbeginn bis zum Ende des Monats vor der Monatsangabe
* monat vergangen sind, also die Anzahl an Tagen, die sich dadurch
* ergibt, dass man einen bestimmten Monat angibt. Der Parameter jahr
* ermglicht der Funktion zwischen Schaltjahren und Nicht-Schaltjahren
* zu unterscheiden.
*/
int tageDurchMonat(int monat, int jahr)
{
}
/*
* istSchaltjar
*
* Berechnet, ob jahr ein Schaltjahr war. Trifft dies zu, gibt
* die Funktion 1 zurck, andernfalls 0.
*/
int istSchaltjahr(int jahr)
{
}