AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Osterformel nach Computus ecclesiasticus
Thema durchsuchen
Ansicht
Themen-Optionen

Osterformel nach Computus ecclesiasticus

Ein Thema von Wolfgang Mix · begonnen am 9. Mär 2010 · letzter Beitrag vom 11. Mär 2010
Antwort Antwort
Seite 2 von 3     12 3      
Benutzerbild von Valle
Valle

Registriert seit: 26. Dez 2005
Ort: Karlsruhe
1.223 Beiträge
 
#11

Re: Osterformel nach Computus ecclesiasticus

  Alt 9. Mär 2010, 21:09
Zitat von alzaimar:
Wolfgang hat mit keinem Wort die Codelibrary erwähnt. Also muss er überhaupt nichts. Er hat 100%ig Recht, wenn er sagt: Schaut selbst nach, es macht Spass, zu recherchieren.

Nur leider ist der Beitrag dann in der falschen Sparte.
Na gut, das habe ich jetzt einfach anders rum interpretiert. Du sagst, sein Beitrag ist gut, aber nicht für die CL und ich sage sein Beitrag ist noch nicht perfekt, aber geht in Richtung CL. Ich denke schon, dass er für die Code Library gedacht ist, sonst würde Wolgang das doch nicht hier posten. Das machen doch eigentlich nur Neulinge, die nicht wissen wo hin.

Liebe Grüße,
Valle
Valentin Voigt
BOFH excuse #423: „It's not RFC-822 compliant.“
Mein total langweiliger Blog
  Mit Zitat antworten Zitat
Balu der Bär
(Gast)

n/a Beiträge
 
#12

Re: Osterformel nach Computus ecclesiasticus

  Alt 9. Mär 2010, 21:13
Nich lange diskutieren, einfach ein bisschen formatieren und aufbereiten und mit in diesem Thread posten: http://www.delphipraxis.net/internal...ct.php?t=44748

Fertig.
  Mit Zitat antworten Zitat
Benutzerbild von Wolfgang Mix
Wolfgang Mix

Registriert seit: 13. Mai 2009
Ort: Lübeck
1.222 Beiträge
 
Delphi 2005 Personal
 
#13

Re: Osterformel nach Computus ecclesiasticus

  Alt 9. Mär 2010, 21:14
Ihr könnt den Thread verschieben, wohin ihr wollt,
ist ja nicht mein Geistesgut, würde es allerdings aus
historischen Gründen gut finden, wenn man das hier irgendwo
finden würde.
Wolfgang Mix
if you can't explain it simply you don't understand it well enough - A. Einstein
Mein Baby:http://www.epubli.de/shop/buch/Grund...41818516/52824
  Mit Zitat antworten Zitat
TBx
(Administrator)

Registriert seit: 13. Jul 2005
Ort: Stadthagen
1.876 Beiträge
 
Delphi 12 Athens
 
#14

Re: Osterformel nach Computus ecclesiasticus

  Alt 9. Mär 2010, 21:18
Zitat von alzaimar:
Nur leider ist der Beitrag dann in der falschen Sparte.
Das sehe ich auch so und darum geht er nun auch auf die Reise ...
Thomas Breitkreuz
Gruß Thomas
- Admin DelphiPRAXIS
- Admin Delphi-Treff
- Embarcadero MVP
  Mit Zitat antworten Zitat
Assertor

Registriert seit: 4. Feb 2006
Ort: Hamburg
1.296 Beiträge
 
Turbo C++
 
#15

Re: Osterformel nach Computus ecclesiasticus

  Alt 9. Mär 2010, 21:28
Hallo Wolfang,

ich habe den Code im Rahmen meiner 3-minütigen Tageslangeweile mal entsprechend der üblichen Gegenbenheiten unter uns Delphi Entwicklern etwas umformatiert.

Delphi-Quellcode:
// Osterformel mit computus ecclesiasticus
function GetEasterDate(Jahr: Integer): TDate; // Jahr des gregorianischen Kalenders
var
  G, X, Z, D, E, N: Integer;
  Jahrhundert,
  Tag,
  Monat: Integer;
  MyDate: TDate;
begin
  G := (Jahr mod 19) + 1;
  Jahrhundert := Jahr div 100 + 1;
  X := 3 * Jahrhundert div 4 - 12;
  Z := (8 * Jahrhundert + 5) div 25 - 5;
  D := (5 * Jahr) div 4 - X - 10;
  E := (11 * G + 20 + Z - X) mod 30;
  if ((E = 25) and (G > 11)) or (E = 24) then // Klammerung?
    Inc(E);
  N := 44 - E;
  if N < 21 then
    Inc(N, 30);
  N := N + 7 - (D + N) mod 7;
  if N > 31 then
  begin
    Tag := n - 31; // (n-31).April
    Monat := 4;
  end
  else
  begin
    Tag := N; // n.März
    Monat := 3;
  end;
  {------Soweit der Originalcode---------}
  MyDate := EncodeDate(Jahr, Monat, Tag);
  Result := MyDate;
end;
Ich habe die Klammerung für den Vergleich von E angepasst: Wenn E = 25 und G > 11 soll E um 1 erhöht werden, ebenso im Falle E = 24.

Quelle: http://user.cs.tu-berlin.de/~csadm/w...01/blatt01.pdf

Gruß,
Assertor

P.S.: Unabhängig vom Nutzen, gerne weiter so!
Frederik
  Mit Zitat antworten Zitat
Benutzerbild von Wolfgang Mix
Wolfgang Mix

Registriert seit: 13. Mai 2009
Ort: Lübeck
1.222 Beiträge
 
Delphi 2005 Personal
 
#16

Re: Osterformel nach Computus ecclesiasticus

  Alt 10. Mär 2010, 09:32
Danke, das Arbeitsblatt habe ich auch schon einmal gesehen.
Leider fehlen auch hier die Erklärungen für die Variablen.
Vielleicht hast du ja noch einmal 3 Minuten Zeit
Wolfgang Mix
if you can't explain it simply you don't understand it well enough - A. Einstein
Mein Baby:http://www.epubli.de/shop/buch/Grund...41818516/52824
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.544 Beiträge
 
Delphi 11 Alexandria
 
#17

Re: Osterformel nach Computus ecclesiasticus

  Alt 10. Mär 2010, 09:36
IIRC wäre die Klammerung rein logisch nicht nötig gewesen, auch wenn sie zumindest dem besseren Verständnis dient, denn AFAIK hat and eine höhere Priorität als or. Aber das nur am Rande
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Assertor

Registriert seit: 4. Feb 2006
Ort: Hamburg
1.296 Beiträge
 
Turbo C++
 
#18

Re: Osterformel nach Computus ecclesiasticus

  Alt 10. Mär 2010, 10:20
Hi,

Zitat von DeddyH:
IIRC wäre die Klammerung rein logisch nicht nötig gewesen, auch wenn sie zumindest dem besseren Verständnis dient, denn AFAIK hat and eine höhere Priorität als or. Aber das nur am Rande
DeddyH, du hast natürlich mal wieder absolut recht. Aber Lesbarkeit ist doch gerade bei solchem Code wichtig

Zitat von Wolfgang Mix:
Danke, das Arbeitsblatt habe ich auch schon einmal gesehen.
Leider fehlen auch hier die Erklärungen für die Variablen.
Vielleicht hast du ja noch einmal 3 Minuten Zeit
Ja, vielleicht Nur leider ist mein Latein etwas eingerostet:

http://daten.digitale-sammlungen.de/...e=7&pdfseitex=
http://daten.digitale-sammlungen.de/...013958/images/

Wobei es das ja teilweise auch in Deutsch gibt:
http://daten.digitale-sammlungen.de/...9&no=4&seite=5

oder

http://www.nabkal.de/gregkal.html

Aber die englische Wikipedia hat da auch gutes zu:
http://en.wikipedia.org/wiki/Computus#cite_note-41

Goldene Zahl, Epakte und Sonntagsbuchstabe wären in vorherigem Code noch zu ersetzen. Für ersteres ist G ein guter Anhaltspunkt

Auch wenn es ob andersherum schon drin ist:
GoldeneZahl := (Jahr + 1) mod 19; So, 3-Minuten für heute um, mal morgen schauen

Gruß,
Assertor
Frederik
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#19

Re: Osterformel nach Computus ecclesiasticus

  Alt 10. Mär 2010, 10:32
@Assertor
Vielen Dank für den Link und die Aufbereitung!

Habe ich mich getäuscht oder gibt es hier zwei Fraktionen, die einen, die formale Mängel in Wolfgangs Beitrag sehen und die anderen, die solch "alten Mist" für überflüssig halten, weil es in der x-Lib die Y-Funktion gibt, die das sowieso viel schneller erledigen kann.

Forrmal kann da bestimmt das eine oder andere besser gemacht werden, aber überflüssig ist so etwas überhaupt nicht, da meiner Meinung nach die Kenntnis über die Existenz solcher Algorithmen, und noch besser deren Anwendung (und Optimierung)zum Handwerkszeug eines Programmieres gehört.

Das zusammenklicken von Codefragmenten sollten wir den Script-Kiddies überlassen.
(Manchmal ist es allerdings bequemer und schneller das Rad nicht neu zu erfinden)

Meiner Meinung nach gehört das (überarbeitet) in die Codelib.

Gruß
K-H

Edit: Gottjemine, der deutsche Text ist zumindestens keine wörtliche Übersetzung. Was bin ich froh das ich das nicht mehr übersetzen muß, wie kommt Ihr nur immer wieder an solche links in dem ganzen google Müll?
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#20

Re: Osterformel nach Computus ecclesiasticus

  Alt 10. Mär 2010, 12:48
Ich habe mir nun ca. 1,5 Stunden die Zeit genommen, zu recherchieren, was es mit dem Code auf sich hat.
Doch überall ist es erforderlich, in einer Tabelle nach zu schauen, bsp. hier.

Ich habe mal versucht, den Code dort umzusetzen und es gibt auch Ähnlichkeiten mit dem Code aus dem C-Buch, aber ganz vollendet bekomme ich den Algorithmus nicht. Und der gleiche Algorithmus ist es wohl auch nicht oder ich habe das Nachschlagen in der Tabelle zu kompliziert umgesetzt.
Das Problem ist nun, dass ich vom berechneten Tag so viele Tage dazu addieren muss, bis man den Sonntag erhält. Nur wie das geht, kriege ich nicht heraus.

Delphi-Quellcode:
function GetEasterDate(Year: Integer): TDate;
var
  Century, GoldenNumber: Integer;
  JulianEpact, GregorianEpact: Integer;
  SolarEquation, LunarEquation: Integer;
  Day, Month: Integer;
begin
  Century := (Year div 100) + 1;
  GoldenNumber := (Year mod 19) + 1;
  JulianEpact := (11 * (GoldenNumber - 1)) mod 30;
  SolarEquation := (3 * Century) div 4;
  LunarEquation := (8 * Century + 5) div 25;
  GregorianEpact := JulianEpact - SolarEquation + LunarEquation + 8;

  while (GregorianEpact > 30) do
    Dec(GregorianEpact, 30);
  while (GregorianEpact < 0) do
    Inc(GregorianEpact, 30);

  // table lookup follows, I hope it's correct

  // month
  if (GregorianEpact < 13) or (GregorianEpact > 23) then
    Month := 4
  else
    Month := 3;

  // day
  if (GregorianEpact < 13) then
    Day := 13 - GregorianEpact
  else if (GregorianEpact < 24) then
    Day := 44 - GregorianEpact
  else if GregorianEpact = 24 then
    Day := 18
  else if GregorianEpact = 25 then
  begin
    if GoldenNumber > 11 then
      Day := 17
    else
      Day := 18;
  end
  // GregorianEpact > 25
  else
    Day := 43 - GregorianEpact;

  // go forward to easter sunday
  // example: if Day is a friday => Inc(Day, 2) to get the sunday
  // but how to do it?

  Result := EncodeDate(Year, Month, Day);
end;
Und der Abschnitt "Isn't there a simpler way to calculate Easter" im verlinkten Dokument scheint einen anderen Algorithmus zu verwenden.

Blöder Algorithmus.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:05 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz