Re: psp oda ds
;;; EfidI 3, WS 2002/03
;;; Aufgabenblatt 2, Aufgabe 4
;;; Autor: Michael Hanig
; Aufgabe 4.1
(define (schaltjahr? jahr)
(cond ((zero? (modulo jahr 400)) #t)
((zero? (modulo jahr 100)) #f)
((zero? (modulo jahr 4)) #t)
(else #f)))
; Aufgabe 4.2
(define (tage monat jahr)
(cond ((= monat 2) (if (schaltjahr? jahr) 29 28))
((< monat 8) (if (= 0 (modulo monat 2)) 30 31))
(else (if (= 1 (modulo monat 2)) 30 31))))
; Aufgabe 4.3
(define (spaeter? tag1 monat1 jahr1 tag2 monat2 jahr2)
(> (+ tag1 (* monat1 100) (* jahr1 10000))
(+ tag2 (* monat2 100) (* jahr2 10000))))
(define (tage-bis tag1 monat1 jahr1 tag2 monat2 jahr2)
(if (spaeter? tag1 monat1 jahr1 tag2 monat2 jahr2)
(- (tage-bis tag2 monat2 jahr2 tag1 monat1 jahr1))
(if (and (= tag1 tag2) (= monat1 monat2) (= jahr1 jahr2))
0
(+ (tage-bis
(+ (modulo tag1 (tage monat1 jahr1)) 1)
(+ (modulo (- (+ monat1 (if (= tag1 (tage monat1 jahr1)) 1 0)) 1) 12) 1)
(+ jahr1 (if (and (= tag1 (tage monat1 jahr1)) (= monat1 12)) 1 0))
tag2
monat2
jahr2)
1))))
; Aufgabe 4.4
(define (wochentag tag monat jahr)
(case (modulo (tage-bis 27 10 2002 tag monat jahr) 7)
((0) "Sonntag")
((1) "Montag")
((2) "Dienstag")
((3) "Mittwoch")
((4) "Donnerstag")
((5) "Freitag")
((6) "Samstag")))
Mein Beitrag zum Klammern-Tag.
(Okay, ein bisschen Off-Topic. )
- Igor, Persona 4