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
