Turbo Pascal: Ewiger Kalender - Schaltjahrberechnung.....
HOME | Zum Thema ... Bücher Aufgaben an Freunde | CD's Suche Benutzerkonto Forum4U Newsletter Moderator

Informatik4u: Referate/Hausarbeiten: Turbo Pascal: Ewiger Kalender - Schaltjahrberechnung.....

[Bücher für Turbo Pascal: Ewiger Kalender - Schaltjahrberechnung.....] [hier Moderator werden]
- Bitte für jede neue Frage/Aufgabe auf "neuer Beitrag" klicken -

  

sofia (Thinice)
Suche alle Beiträge dieser Person

Mittwoch, den 29. Mai, 2002 - 00:37 Klick hier um diese Nachricht zu editieren
ihr guten leute,
bitte helft mir möglichst schnell bei folgendem:

ich soll in turbo pascal einen ewigen kalender erstellen, der nach manueller eingabe von tag, monat und jahr (abfrage) den entsprechenden wochentag ausgibt. mit einbezogen soll natürlich das kriterium der schaltjahre werden. (dort rücken die wochentage entsprechend auf.) zu diesem zweck soll ich in der programmstruktur folgende allgemeingültige regel einbauen:
ein jahr ist ein schaltjahr, wenn es sich durch vier teilen lässt. ausnahme: ein jahr ist kein schaltjahr, wenn es sich zusätzlich zwar noch durch 100, aber NICHT durch 400 teilen lässt. bsp.: das jahr 2000 ist ein schaltjahr.
die variablen 'trunc' , 'fraq' , und 'inc' sollten -wenn möglich- benutzt werden.

bitte helft mir und schreibt mir die struktur, denn ich hab leider keine ahnung. ganz ganz lieb wäre es, wenn ihr noch ein klein wenig dazu erläutern könntet.
vielen dank schon mal im voraus!

sofia

  

J
Suche alle Beiträge dieser Person

Donnerstag, den 30. Mai, 2002 - 11:31 Klick hier um diese Nachricht zu editieren
Hi sofia,
zunächst eine vorbemerkung:
Einsolches programm, wie du es skizziert hast, wird nur für Daten korrekt arbeiten, die nach der gregorianischen kalenderreform liegen. Bei dieser Reform wurdden 10 tage gestrichen: Auf Donnerstag, den 4. Oktober 1582 folgte Freitag, der 15. Oktober 1582.
Vor diesem Datum war die Schaltjahresregelung anders. Wenn du noch weiter zurückrechnen willst, musst du ausserdem beachten, das es das jahr 0 nicht gegeben hat. auf das jahr -1 (1 vChr) folgt direkt das Jahr 1 (1 nach Chr).

Eine mögliche Struktur für ein Programm, dass für alle Tage ab dem 15.10.1582 den Wochentag angibt, könnte so aussehen:

Zuerst eine boolsche Funktion IstSchaltjahr
FUNCTION IstSchaltjahr(jahr:intger):BOOLEAN;
BEGIN
IF (jahr MOD 400) = 0 THEN IstSchaltjahr := TRUE
ELSE
IF (jahr MOD 100) = 0 THEN IstSchaltjahr := FALSE
ELSE
IF (jahr MOD 4) = 0 THEN IstSchaltjahr := TRUE
ELSE
IstSchaltjahr := FALSE;
END;

Als nächstes bestimmst du die Anzahl der Tage seit dem 15.10.1582(dieser Tag war ein Freitag)
Für die Daten vom 15.10.1582 bis zum 31.12.1582 ist eine Soderbehandlung sinnvoll (oder du lässt erst Daten ab dem 1.1.1583 zu)
Zunächst addierst du die Tage aus den ganz abgelaufenen Jahren seit 1583
Beispiel: Das Datum sei der 18.1.2004
folgender Programmausschnitt:
AnzahlTage := 77 {restl Tage in 1582}
For i:= 1583 TO jahr-1 do
if IstSchaltjahr(i) THEN AnzahlTage := AnzahlTage +366 ELSE AnzahlTage := AnzahlTage * 365;
Zu dieser Zahl addierst du die Tage der abgelaufenen Monate im Jahr, aus dem das Datum stammt.
Du addierst 31, falls das Datum im Februar liegt, 31+23, falls das Datum im März liegt, 31+28+31 falls das Datum im April liegt usw.
Falls das Jahr selbst ein Schaltjahr ist, musst du statt 28 die Zahl 29 nehmen (Fallunterscheidung!)
Dazu kommen noch die Tage des laufenden Monats


Wenn du die Tage seit dem 15.10.1582 bestimmt hast, dann bestimmst du als letztes
AnzahlTage MOD 7

Wenn dieser Wert 0 ist, so ist der tag ein Freitag, bei 1 ein Samstag usw... bis .bei 6 ein Donnerstag.
Hinweis: da die Anzahl der Tage in der Regel größer als 2^15 ist, musst du als Datentyp LONGINT verwenden.

Gruß J


Eine Nachricht hinzufügen


Dies ist ein öffentlicher Bereich. Wenn Du kein Benutzerkonto (erlaubt z.B. automatische e-mail-Benachrichtigung + ...) hast, gib Deinen Namen in das "Benutzername"-Feld ein und lasse das "Passwort"-Eingabefeld leer. Die Angabe Deiner eMail-Adresse ist freiwillig. Bitte beachte die Nutzungsbedingungen.
Benutzername:  
Passwort:
eMail-Adresse:

Willkommen in der Rubrik Turbo Pascal: Ewiger Kalender - Schaltjahrberechnung...... Du kannst jetzt ein Gebiet anklicken.


HOME | Zum Thema ... Bücher Aufgaben an Freunde | CD's Suche Benutzerkonto Forum4U Newsletter Moderator
a