rendered paste body;----------------------------------
; GdI 1 / ICS 1 - WS 06/07
; Uebung / Exercise 01
;----------------------------------
; TU Darmstadt
;----------------------------------
; Hausuebung
; Aufgabe / Task 8
;
; Name: Philipp Koehler
;----------------------------------
;;Vertrag discriminant: number number -> number; negative_squareroot
;;Beschr. Errechnet dir Wurzel der pq-Formel (- (sqr (/ p 2)) q))
;;Beispiel (descriminant 4 2)
(define (descriminant p q)
(cond
[(>= (desc_sq p q) 0) (sqrt (desc_sq p q))]
[else 'negative_squareroot]))
;;Teil von descriminant.
(define (desc_sq p q)
(- (sqr (/ p 2)) q))
;;Vertrag quad-equation: number number symbol -> number; 'no_real_solution
;;Beschr. Errechnet die pq-Formel. Man übergibt das Symbol 'x1/'x2 für das
;; erste oder zweite Ergebniss
;;Beispiel
(define (quad-equation p q x)
(cond
[(symbol? (descriminant p q)) 'no_real_solution]
[(symbol=? 'x1 x) (+ (/ p -2) (descriminant p q))]
[(symbol=? 'x2 x) (- (/ p -2) (descriminant p q))]
[else 'invalid_input]))
;;test
(descriminant 4 2) ;;soll:
1.4142
(descriminant 2 4) ;;soll:
'negative_squareroot
(quad-equation 4 3 'x1) ;;soll:
-1
(quad-equation 4 3 'x2) ;;soll:
-3
(quad-equation 3 4 'x1) ;;soll:
'no_real_solution
(quad-equation 3 4 'x2) ;;soll:
'no_real_solution