Autor Beitrag
The_Tremendous
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 47

Win XP SP2
Borland Delphi 6
BeitragVerfasst: So 19.06.05 17:51 
Der Algorithmus an sich funktioniert eigentlich richtig.
Nur bei einem Datum nach dem 28.02 eines Jahres rechnet er immer 2 Tage drauf, also ob der Februar 30 Tage hätte. Kann mir einer erklären, wo der Fehler liegt??

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
procedure WochentagBestimmen;
var day, month, century, year, ergebnis : Integer;
    datum, ausgabe : String;
begin
  clrscr;
  write('Bitte geben sie das gewuenschte Datum ein: '); readln(datum);

  // Auslesen des Wochentages, des Monats, des Jahrhunderts und des Jahres aus dem vorgegebenem Datum
  day :=  StrToInt(copy(Datum,1,2));
  month := StrToInt(copy(Datum,4,2));
  century := StrToInt(copy(Datum,7,2));
  year := StrToInt(copy(Datum,9,2));

  // Anpassung der Monate, da laut Zellerschem Algorithmus die Monate Januar und Februar zum Vorjahr gehören
  if month < 3 then begin
    Dec(year);
    month := Succ((month + 9mod 12);
  end;

  // Zellerscher Algorithmus
  ergebnis := (day +((13*month-1)div 5) + year + (year div 4) + (century div 4)
                -2*century) mod 7;

  // Erhöhen des Ergebnisses um 7 Tage, wenn ergebnis negativ ist
  if ergebnis < 0 then begin
    Inc(ergebnis, 7);
  end;

  // Belegung der Tage zu dem jeweiligen Ergebnis
  case ergebnis of
      0:  ausgabe := 'Sonntag';
      1:  ausgabe := 'Montag';
      2:  ausgabe := 'Dienstag';
      3:  ausgabe := 'Mittwoch';
      4:  ausgabe := 'Donnerstag';
      5:  ausgabe := 'Freitag';
      6:  ausgabe := 'Samstag';
   end;

  write('Das Datum ' +Datum+ ' liegt auf einem ' + ausgabe);  readln;
end;



Moderiert von user profile iconChristian S.: Topic aus Sonstiges verschoben am So 19.06.2005 um 17:55
F34r0fTh3D4rk
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 5284
Erhaltene Danke: 27

Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
BeitragVerfasst: So 19.06.05 18:02 
mach doch ne abfrage, wenn der monat blablabla dann - 2 :?
The_Tremendous Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 47

Win XP SP2
Borland Delphi 6
BeitragVerfasst: So 19.06.05 18:16 
das bringt aber nichts, da zum beispiel der 31.12.04 nur um einen tag verschoben ist, wegen schlatjahr.

Ausserdem ist es ja nicht sinn der sache, solange um fehler rumzuprogramieren, bis es geht. wenn es schon nen algorithmus für gibt, sollte der auch gehen.


Das lustige ist, dass es in einem delphiprogramm, dass ich auch geschrieben hat mit der gleichen prozedur keinen Fehler gibt