All pastes #1756549 Raw Edit

Miscellany

public text v1 · immutable
#1756549 ·published 2010-01-18 20:50 UTC
rendered paste body
/*********************************************************************
 *
 *  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)
{

}