![]() |
Datumsdifferenz berechnen?
Hallo,
ich soll ein Programm schreiben, dass die Tage bis zu den nächsten Ferien berechnen soll. Dabei sollen Verbundtypen zwingend benutzt werden. Zudem ist der Funktionskopf vorgegeben. Bis jetzt sieht mein Programm so aus:
Delphi-Quellcode:
Ich bin mir nicht sicher ob das richtig ist. Dass nicht jeder Monat 31 Tage hat, ist mir dabei bewusst! ;)
program Project2;
{$APPTYPE CONSOLE} uses SysUtils; type tDatum = record Tag: 1..31; Monat: 1..12; Jahr: 2014..maxint; end; // of record function tagebisferien (datumheute, datumferienbeginn: tDatum): integer; begin result := (datumferienbeginn.Monat - datumheute.monat) * 31 + (datumferienbeginn.tag - datumheute.Tag); end; var heute, ferien: tDatum; anzahl: integer; begin writeln('[= Heutiges Datum =]'); write('Tag: '); readln(heute.Tag); write('Monat: '); readln(heute.Monat); write('Jahr: '); readln(heute.Jahr); writeln('[= Feriendatum =]'); write('Tag: '); readln(ferien.Tag); write('Monat: '); readln(ferien.Monat); write('Jahr: '); readln(ferien.Jahr); Anzahl := tagebisferien(heute, ferien); writeln('Es ist/sind noch ',abs(anzahl),' Tag/Tage bis zu den naechsten Ferien'); readln; end. Auf jede Antwort würde ich mich freuen, Gruß |
AW: Datumsdifferenz berechnen?
Moin... 8-)
Das einfachste dürfte ![]() PS: Was sind Verbundtypen? |
AW: Datumsdifferenz berechnen?
Mit Verbundtyp ist das
Delphi-Quellcode:
gemeint (ungewöhnlicher Name)
tDatum
|
AW: Datumsdifferenz berechnen?
Ach der Record... :roll: Für ein Datum eh ein ungewöhnliches Format. Wer gibt solche Vorgaben? Ein Lehrer?
|
AW: Datumsdifferenz berechnen?
Zitat:
Hängt davon ab, was man gerade vermitteln möchte. Pauschales Lehrer-Bashing, weil die ja nicht nachdenken, ohne Vor- und Nachdenken :roll: |
AW: Datumsdifferenz berechnen?
Eben, es ist nämlich nicht so leicht, das zu berechnen. Vor allen Dingen lernt man, zu programmieren, da die Lösung des Problems andere Datenstrukturen, Formeln, bedingte Verzweigungen, Schleifen und im günstigsten Fall den Aufruf anderer Funktionen beinhaltet.
Vielleicht sollte der Fragesteller einfach mal erklären, wie er das mit Papier und Bleistift ausrechnen würde. Denn da nicht alle Monate 31 Tage haben, ist der bisherige Code zwar ein Anfang, aber noch nicht die Lösung. Also: Erst in Deutsch formulieren, wie man das machen würde, dann schauen wir weiter. |
AW: Datumsdifferenz berechnen?
Tage=Ferienbeginn -now;
Ferienbeginn muss einfach ein TDate sein! Ich verstehe das Problem garnicht:?::?: Das funktioniert |
AW: Datumsdifferenz berechnen?
Zitat:
|
AW: Datumsdifferenz berechnen?
Du bräuchtest eine Funktion, die dir sagt ob ein bestimmtes Jahr ein Schaltjahr ist.
Delphi-Quellcode:
Falls nur die Ferien im aktuellen Jahr berücksichtigt werden, kann man das Schaltjahrthema natürlich ignorieren.
function IstSchaltJahr(jahr:Integer):Boolean;
begin ... Dann braucht du ein Array (oder eine Funktion) die für jeden Monat (1..12) die Anzahl der Tage liefert. Die Dinge, die ich hier angesprochen habe sind auch etwas versteckt in der VCL/RTL von Delphi zu finden, aber ich würde es selbst programmieren. |
AW: Datumsdifferenz berechnen?
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:04 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz