Programmieren - alles kontrollieren 4.935 Themen, 20.621 Beiträge

-Datumsberechnung- in Pascal

mac dac / 1 Antworten / Flachansicht Nickles

Hi,

wer kann mir helfen. Ich bin neu in der Programmiersprache (Dev-Pascal) und
ich muß meine Praktikumarbeit in einer Woche abgeben.

So hat jemand ein Programm scho geschrieben mit den Folgenden Komplexe:

Komplex 1:
  In einem menügesteuerten Demonstrationsprogramm sind Möglichkeiten des
Umgangs mit einem kalendarischen Datum mittels Zeichenketenarbeit aufzuzeigen.
Die benötigten Unterprogramme sind in einer Unit Datum zusammenzufassen.

   1.Es sollen beliebig viele Daten eingegeben werden können, die zunächst
auf ihre syntaktische Richtigkeit überprüft werden. Bei falscher Eingabe soll
eine Fehlermeldung erfolgen und die Eingabe wiederholt werden können.
(verwenden sie den DAtentyp Longint.)

   2.Prüfung, ob sich ein DAtum in einem Schaltjahr befindet,

   3.Ermittlung der Anzahl der Tage seit Jahresbeginn,

   4.Ermittlung der Anzahl der Tage zwischen zwei Daten,

   5.Berechnung eines neuen Datums aus einem Ausgangsdatum plus einer Anzahl
von Tagen,

   6.Bestimmung des Wochentags für ein gegebenes Datum.

Komplex 2:
  Ermöglichen Sie das Erkennen und Verarbeiten unterschiedlicher
Datenformate:
      -1.1.2003
      -2003-01-01
      -1.Januar 2003
Integrieren Sie die benötigten Unterprogramm in die UNIT Datum.

Komplex 3:
  Erweitern Sie Ihre Lösung um Unterprogramme,die die beweglichen Feiertage
Ostern, Himmelfahrt, Pfingsten und Aschermittwoch für ein vorzugebendes Jahr
berechnen.
  Binden sie diese in die UNIT Datum und das Demonstrationsprogramm ein.



Zellerscher Algorithmus zur Bestimmung des Wochentages:
   Folgende Formel liefert eine Kennzahl für den Wochentag:

    W=(T+[13 M-1/5]+Y+[Y/4]+[C/4]-2C) mod 7

Dabei gilt: T=TAG,M=Monat,J=Jahr,C=J div 100 = Jahrhundert, Y= J mod 100
=Jahr im Jahrhundert. Die echigen Klammern bedeuten, dass der ganze Anteil
dieses Terms gebildet wird.

Die Monatskennzahlen Msind 1=März..10=Dezember;Januar und Februar sind die
Monate 11 und 12 des Vorjahres. Die Wochentage W sind durch die Zahlen 0=
Sonntag bis 6=Samstag gekennzeichnet.

so falls jemand es scho geschrieben hat oder mir helfen kann bitte bitte
melde sich mal.

Herzlichen Dank!

Viele Grüße,

bei Antwort benachrichtigen
Andreas42 mac dac „-Datumsberechnung- in Pascal“
Optionen

Hi!

Sorry, also ich hab' jetzt gerade einen Tag frei und bin froh, dass ich nicht irgendwelche Aufgaben für andere leute umsetzen muss.

Was ist das Problem dabei? Nebenbei gesagt, finde ich deine Taktik eher ungeschickt. Hier haben sich schon mehr Leute beschwert, dass sie nicht gerne für andere die hausaufgaben erledigen. Es wäre geschickter Gewesen, nach einzelnen Problemen zu fragen.

Ohne Vorhenntnisse kann man die Aufgabe jedenfalls nicht lösen, du musst irgendwelche Unterlagen als Hilfsmittel haben.

Dev-Pascal ist übrigends AFAIK eine sehr schöne IDE, aber auch eben enur eine IDE. Der Compiler darunter ist entweder Free-pascal oder GNU-pascal. Hilfen und eine Funktionsreferenz wird zumindest in der GNU-Version mitinstalliert.

OK, soweit ich das zu dieser Urzeit noch blicke, sehe ich folgende Tipps:

- Schaltjahr
Das sollte doch amchbar sein, oder? Ist doch nicht merh als ein einfacher Zahlenbereichsvergleich mit Divisionen und Modulo. Wie war das? Teilbar durch 4 ist Schaltjahr, durch 100 wieder nicht. Bei 1000ern dann aber wieder doch?

- Syntax/Datumsformat
Ditto: Zahl mit Div/Mod zerlegen und prüfen. Man könnte auch schauen pb der Compiler die Möglichkeit bietet das zu machen indem man die einzelnen Werte einer Funktion gibt oder als String anliefert.

- Tage zwischen zwei Daten (oder ab Jahresbeginn)
Das Zauberwort für die Recherche ist "Julianischer Datumszähler" teilweise auch "Julianisches Datum" . Da könnte ich was im TP-Format liefern. Es würde mich allerdings wundern, wenn das GNU/Freepascal nicht als Funktion bieten...

- Wochentag
Würde ich mit einem Trick machen: der 01.01.2000 war ein Samstag. Dann die Div. zum eingegeben Datum brechnen MOD 7 und mann müsste einen Wochentageszähler bekommen, oder?

Für heute reichts.

Bis denn
Andreas

Hier steht was ueber mein altes Hard- und Softwaregedoens.
bei Antwort benachrichtigen