Bearbeiten von „P1-WS04-MusterLoesung11.txt“
Zur Navigation springen
Zur Suche springen
Warnung: Du bist nicht angemeldet. Deine IP-Adresse wird bei Bearbeitungen öffentlich sichtbar. Melde dich an oder erstelle ein Benutzerkonto, damit Bearbeitungen deinem Benutzernamen zugeordnet werden.
Die Bearbeitung kann rückgängig gemacht werden. Bitte prüfe den Vergleich unten, um sicherzustellen, dass du dies tun möchtest, und veröffentliche dann unten deine Änderungen, um die Bearbeitung rückgängig zu machen.
Aktuelle Version | Dein Text | ||
Zeile 1: | Zeile 1: | ||
<pre> | <pre> | ||
; Muesterloesung Aufgabenblatt 11 | ; Muesterloesung Aufgabenblatt 11 | ||
; P1 | ; P1 WiSe 04/05 | ||
; Oezguer Oezcep | ; Oezguer Oezcep | ||
Zeile 9: | Zeile 9: | ||
;;; Umrechnungskurs | ;;; Umrechnungskurs | ||
(define | (define EURO2DOLLAR 1.32) | ||
(define | (define EURO2PFUND 0.70) | ||
Zeile 24: | Zeile 24: | ||
;;;(b) | ;;;(b) | ||
(define ( | (define (wertVonBetrag betrag) | ||
(car betrag)) | (car betrag)) | ||
;(define ( | ;(define (waehrungVonBetrag betrag) | ||
; (car (cdr betrag))) | ; (car (cdr betrag))) | ||
; bzw. kuerzer | ; bzw. kuerzer | ||
(define ( | (define (waehrungVonBetrag betrag) | ||
(cadr betrag)) | (cadr betrag)) | ||
;;; Test | ;;; Test | ||
; > ( | ; > (wertVonBetrag (neuerGeldbetrag 2 'Euro)) | ||
; 2 | ; 2 | ||
; > ( | ; > (waehrungVonBetrag (neuerGeldbetrag 2 'Euro)) | ||
; euro | ; euro | ||
Zeile 43: | Zeile 43: | ||
(define (nachEuro betrag) | (define (nachEuro betrag) | ||
(case ( | (case (waehrungVonBetrag betrag) | ||
; ist schon Euro => keine Aenderung | ; ist schon Euro => keine Aenderung | ||
Zeile 49: | Zeile 49: | ||
; Konvertierung von Dollar | ; Konvertierung von Dollar | ||
((dollar) | ((dollar) | ||
(neuerGeldbetrag (/ ( | (neuerGeldbetrag (/ (wertVonBetrag betrag) EURO2DOLLAR) 'Euro)) | ||
; Konvertierung von Pfund | ; Konvertierung von Pfund | ||
((pounds) | ((pounds) | ||
(neuerGeldbetrag (/ ( | (neuerGeldbetrag (/ (wertVonBetrag betrag) EURO2PFUND) 'Euro)) | ||
; falsche Waehrung => false | ; falsche Waehrung => false | ||
(else #f))) | (else #f))) | ||
Zeile 59: | Zeile 59: | ||
(cond | (cond | ||
; falsche Quellwaehrung => false | ; falsche Quellwaehrung => false | ||
((not (eq? ( | ((not (eq? (waehrungVonBetrag betrag) 'euro)) #f) | ||
; Euro nach Euro | ; Euro nach Euro | ||
((eq? waehrung 'euro) betrag) | ((eq? waehrung 'euro) betrag) | ||
; Euro nach Dollar | ; Euro nach Dollar | ||
((eq? waehrung 'dollar) | ((eq? waehrung 'dollar) | ||
(neuerGeldbetrag (* ( | (neuerGeldbetrag (* (wertVonBetrag betrag) EURO2DOLLAR) 'Dollar)) | ||
; Euro nach Pfund | ; Euro nach Pfund | ||
((eq? waehrung 'pounds) | ((eq? waehrung 'pounds) | ||
(neuerGeldbetrag (* ( | (neuerGeldbetrag (* (wertVonBetrag betrag) EURO2PFUND) 'Pounds)) | ||
; falsche Zielwaehrung => false | ; falsche Zielwaehrung => false | ||
(else #f))) | (else #f))) | ||
Zeile 86: | Zeile 86: | ||
;;; Vorbedingung: die Waehrungen von betrag1 und betrag2 sind gleich | ;;; Vorbedingung: die Waehrungen von betrag1 und betrag2 sind gleich | ||
(define ( | (define (addiereWaehrungsgleicheBetraege betrag1 betrag2) | ||
(let* ( | (let* ( | ||
(wert1 ( | (wert1 (wertVonBetrag betrag1)) | ||
(wert2 ( | (wert2 (wertVonBetrag betrag2)) | ||
(waehrung ( | (waehrung (waehrungVonBetrag betrag1)) | ||
(summe (+ wert1 wert2)) | (summe (+ wert1 wert2)) | ||
) | ) | ||
Zeile 96: | Zeile 96: | ||
;;; Test | ;;; Test | ||
; > ( | ; > (addiereWaehrungsgleicheBetraege (neuerGeldbetrag 2 'Euro) (neuerGeldbetrag 4 'Euro)) | ||
; (6 euro) | ; (6 euro) | ||
Zeile 105: | Zeile 105: | ||
(let* ( | (let* ( | ||
; Konvertiere Betraege nach Euro und ... | ; Konvertiere Betraege nach Euro und ... | ||
( | (neuerGeldbetragInEuro1 (nachEuro betrag1)) | ||
( | (neuerGeldbetragInEuro2 (nachEuro betrag2)) | ||
) | ) | ||
; ... addiere mit | ; ... addiere mit addiereWaehrungsgleicheBetraege | ||
( | (addiereWaehrungsgleicheBetraege neuerGeldbetragInEuro1 neuerGeldbetragInEuro2))) | ||