FB18 - Das Forum für Informatik

fb18.de / Diplom Informatik / Unterbereich Grundstudium / Praktische Informatik

P1 Scheme - Schaltjahr Variante2 mit or,and,not

P1 Scheme - Schaltjahr Variante2 mit or,and,not 2005-02-07 09:41
Anonymer User
Im Skript 2b S.89 steht eine zweite Variante des Schaltjahr?-Programmes:

(define (leap2 y)
(or
(and (= (remainder y 4) 0)
(not (= (remainder y 100) 0)))
(= (remainder y 400) 0)))

Nach meinem Verständnis müsste das Jahr ein Schaltjahr sein,
wenn ymod4=0 und ymod100 ungleich 0 ist (?) oder ymod400=0 .
Da stimmt doch was nicht, oder?
Kann mir das jemand mal bitte erklären.

Re: P1 Scheme - Schaltjahr Variante2 mit or,and,not 2005-02-07 09:49
guiltyguy
Hallo,

hast du S. 88 ordentlich durchgelesen, dann sollte klar werden, warum das Script so ist.

P.S.: Wenn jemand den Titel ändern will, es geht um ein Scheme Script –> P1

Re: P1 Scheme - Schaltjahr Variante2 mit or,and,not 2005-02-07 09:57
Anonymer User
Hab ich, verstehs aber trotdem nicht.
Denn ein Schaltjahrmuss doch, wie ichs auch auf Seite 87 lese durch 100 und 400 ohne Rest teilbar sein oder durch 4 ohne Rest und jetzt steht auf seite 89 durch 100 mit Rest?

Re: P1 Scheme - Schaltjahr Variante2 mit or,and,not 2005-02-07 10:05
Slater
was ist denn nun genau dein Problem?
ein Jahr ist genau dann ein Schaltjahr wenn es
(entweder durch 4 teilbar ist aber nicht durch 100)
oder (durch 400 teilbar ist)

das steht doch genau da in dem Code?

Re: P1 Scheme - Schaltjahr Variante2 mit or,and,not 2005-02-07 10:10
guiltyguy
Hab ich, verstehs aber trotdem nicht.
Denn ein Schaltjahrmuss doch, wie ichs auch auf Seite 87 lese durch 100 und 400 ohne Rest teilbar sein oder durch 4 ohne Rest und jetzt steht auf seite 89 durch 100 mit Rest?

Nein, S. 88 sagt folgendes aus:
a) Ein Jahr, das durch 4 teilbar ist, ist ein Schaltjahr
b) Die Jahre, die durch 100 aber nicht durch 400 teilbar sind, sind KEIN Schaltjahr

–> Nur die Jahre, die durch 4 und nicht durch 100 teilbar sind, oder die Jahre die durch 400 teilbar sind, sind ein Schaltjahr

Re: P1 Scheme - Schaltjahr Variante2 mit or,and,not 2005-02-07 10:13
Anonymer User
Gut dann hab ich den Code doch richtig verstanden,
dann liegt es nur an meinem falschen Verständnis für Schaltjahre..
Ich dachte, weil ich es aus variante 1:
(define (leap y)
(cond ((= 0 (remainder y 100))
(= 0 (remainder y 400)))
(else
(= (remainder y 4) 0))))

so ablese dass das Jahr durch 100 und 400 teilbar sein soll
meine falsche Folgerung daraus war dass das Jahr also durch 100 und durch 4 teilbar sein sollte (in Var 2)

Re: P1 Scheme - Schaltjahr Variante2 mit or,and,not 2005-02-07 10:19
guiltyguy
Ich glaub ich weiss jetzt, was dein Problem ist, das Script auf S. 87 hab ich eben auch missverstanden…
Du musst das so sehen:

(define (leap y)
(cond ((= 0 (remainder y 100)) ;wenn y durch 100 teilbar ist
; dann ist das Ergebnis die Abfrage ob y durch 400 teilbar ist
(= 0 (remainder y 400)))
; sonst ist das Ergebnis die Abfrage ob y durch 4 teilbar ist.
(else
(= (remainder y 4) 0))))

Jetzt klar?

Re: P1 Scheme - Schaltjahr Variante2 mit or,and,not 2005-02-07 10:25
Anonymer User
Ach so!

Danke für deine Hilfe!

Re: P1 Scheme - Schaltjahr Variante2 mit or,and,not 2005-02-07 12:23
Fred
dass das Jahr durch 100 und 400 teilbar sein soll
Das ist Unsinn, weil die 100 aus der 400 folgt. Es gibt keine Zahl, die zwar durch 400, jedoch nicht durch 100 teilbar ist.
durch 100 und durch 4 teilbar sein sollte
Hier gilt genau das gleiche, das kann gar nicht richtig sein (egal woraus man das ableitet), da 100 ein Vielfaches von 4 ist.