Anzeige:
Ergebnis 1 bis 8 von 8

Thema: schaltjahre berechnen

  1. #1
    Registrierter Benutzer
    Registriert seit
    14.01.2002
    Beiträge
    657

    schaltjahre berechnen

    Hallo,

    wie berechne ich, wieviele schaltjahre zwischen Jahr X und Y liegen?
    das ganze soll ohne eine Schleife ablaufen, die alle Jahre nach den Kriterien [1] durchtestet, sondern nach einer optimierten Formel hierfür.
    Mehr als eine gute Näherung allerdings bekomme ich nicht hin.

    Markus

    [1]:
    die Kriterien Für ein Schaltjahr lauten:
    durch 400 teilbare Jahre sind Schaltjahre
    durch 100 teilbare Jahre sind keine Schaltjahre
    durch 4 teilbare Jahre sind Schaltjahre
    rest ist kein Schaltjahr

  2. #2
    Registrierter Benutzer Avatar von Detrius
    Registriert seit
    09.03.2004
    Ort
    Altena
    Beiträge
    64
    Ich würde mit (Y-X)%4 anfangen, dann die Ränder des Intervalls berücksichtigen (bei z.b. 6 Jahren, können halt 1 oder 2 Schaltjahre dazwischen liegen) und zum Schluss die Hunderter Regeln berücksichtigen (z.B. auch mit if-Abfragen und %-Rechnung). Damit sollte das ohne Schleifen realisierbar sein.

  3. #3
    giggles
    Gast
    Interessante Fragestellung mit eigentlich einfacher Loesung:
    die Formel berechnet die Anzahl der Schaltjahre, die zwischen X und Y liegen, X und Y eingschlossen, X < Y, [x] Gaussklammer (also die groesste ganze Zahl, die <= x ist):

    [Y/4] + [Y/400] + [(X-1)/100] - [Y/100] - [(X-1)/4] - [(X-1)/400]

    Prost!

  4. #4
    Registrierter Benutzer Avatar von elrond
    Registriert seit
    04.10.2001
    Ort
    potsdam
    Beiträge
    881
    respekt
    "Um die Welt zu ruinieren, genügt es, wenn jeder seine Pflicht tut." (Winston Churchill)

  5. #5
    Registrierter Benutzer
    Registriert seit
    14.01.2002
    Beiträge
    657
    Hallo,

    ich teste die Lösung gerade und wie es scheint funktioniert sie perfekt!!
    vielen dank!
    Jetzt muss ich sie nur noch verstehen

    Markus

  6. #6
    giggles
    Gast
    Klar ist die richtig.

    Wieviele Schaltjahre gibt es bis inkl. dem Jahr y?
    [y/4]
    Wieviele Jahre bis inkl. dem Jahr y sind keine Schaltjahre?
    [y/100]
    Nun sind aber alle durch 400 teilbaren Jahre wiederum Schaltjahre, deren Anzahl ist:
    [y/400]

    Also ergibt sich [y/4] - [y/100] + [y/400] und obige Formel ergibt sich aus der Tatsache, dass die Anzahl der Schaltjahre von x bis y gleich der (Anzahl der Schaltjahre von 0 bis y) minus (der Anzahl der Schaltjahre von 0 bis x-1) ist.

    Prost!

  7. #7
    Registrierter Benutzer
    Registriert seit
    14.01.2002
    Beiträge
    657
    Zitat Zitat von giggles
    Klar ist die richtig.

    Wieviele Schaltjahre gibt es bis inkl. dem Jahr y?
    [y/4]
    Wieviele Jahre bis inkl. dem Jahr y sind keine Schaltjahre?
    [y/100]
    Nun sind aber alle durch 400 teilbaren Jahre wiederum Schaltjahre, deren Anzahl ist:
    [y/400]

    Also ergibt sich [y/4] - [y/100] + [y/400] und obige Formel ergibt sich aus der Tatsache, dass die Anzahl der Schaltjahre von x bis y gleich der (Anzahl der Schaltjahre von 0 bis y) minus (der Anzahl der Schaltjahre von 0 bis x-1) ist.

    Prost!
    hallo,

    vielen dank, habe schon verstanden, eigentlich gar nicht schwer.
    jetzt bleibt blos noch die frage, wie du hier her kommt *g*, du scheinst ja eher ein mathematiker als php-programmierer zu sein, sonst hättest du ja nicht [] sondern floor geschrieben.

    merci!
    Markus

  8. #8
    giggles
    Gast
    hehe,

    ich les hier schon etwas laenger aus Interesse mit (ca. 1/2 Jahr). Bin bischen mit perl, bash, php und tcl/tk unterwegs. Hab mich extra fuer diesen Beitrag angemeldet.
    Warum muss man sich eigentlich registrieren? Gibt es in so einem hochwertigen Forum (im Gegensatz zu diversen "hilfe mein Zonealarm geht nicht!!!!"-Forn) keine Moeglichkeit als unangemeldeter Gast zu posten? Faende ich sehr angebracht.

    Prost!

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •