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 [[WiSe]] 04/05
; P1 WiSe 04/05
; Oezguer Oezcep
; Oezguer Oezcep


Zeile 9: Zeile 9:


;;; Umrechnungskurs
;;; Umrechnungskurs
(define [[EURO2DOLLAR]] 1.32)
(define EURO2DOLLAR 1.32)
(define [[EURO2PFUND]] 0.70)
(define EURO2PFUND 0.70)




Zeile 24: Zeile 24:
;;;(b)  
;;;(b)  


(define (wert[[VonBetrag]] betrag)     
(define (wertVonBetrag betrag)     
(car betrag))
(car betrag))


;(define (waehrung[[VonBetrag]] betrag)  
;(define (waehrungVonBetrag betrag)  
; (car (cdr betrag)))
; (car (cdr betrag)))
; bzw. kuerzer
; bzw. kuerzer


(define (waehrung[[VonBetrag]] betrag)
(define (waehrungVonBetrag betrag)
(cadr betrag))
(cadr betrag))
      
      
;;; Test
;;; Test
;  > (wert[[VonBetrag]] (neuerGeldbetrag 2 'Euro))
;  > (wertVonBetrag (neuerGeldbetrag 2 'Euro))
;    2
;    2
;    > (waehrung[[VonBetrag]] (neuerGeldbetrag 2 'Euro))
;    > (waehrungVonBetrag (neuerGeldbetrag 2 'Euro))
;    euro
;    euro
      
      
Zeile 43: Zeile 43:


(define (nachEuro betrag)
(define (nachEuro betrag)
       (case  (waehrung[[VonBetrag]] betrag)  
       (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 (/  (wert[[VonBetrag]] betrag) [[EURO2DOLLAR]]) 'Euro))
                   (neuerGeldbetrag (/  (wertVonBetrag betrag) EURO2DOLLAR) 'Euro))
             ; Konvertierung von Pfund
             ; Konvertierung von Pfund
             ((pounds)  
             ((pounds)  
                   (neuerGeldbetrag (/ (wert[[VonBetrag]] betrag) [[EURO2PFUND]]) 'Euro))
                   (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? (waehrung[[VonBetrag]] betrag) 'euro)) #f)
             ((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 (* (wert[[VonBetrag]] betrag) [[EURO2DOLLAR]]) 'Dollar))
                 (neuerGeldbetrag (* (wertVonBetrag betrag) EURO2DOLLAR) 'Dollar))
             ; Euro nach Pfund
             ; Euro nach Pfund
             ((eq? waehrung 'pounds)  
             ((eq? waehrung 'pounds)  
                 (neuerGeldbetrag (* (wert[[VonBetrag]] betrag) [[EURO2PFUND]]) 'Pounds))
                 (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 (addiere[[WaehrungsgleicheBetraege]] betrag1 betrag2)
(define (addiereWaehrungsgleicheBetraege betrag1 betrag2)
   (let* (
   (let* (
         (wert1 (wert[[VonBetrag]] betrag1))
         (wert1 (wertVonBetrag betrag1))
         (wert2 (wert[[VonBetrag]] betrag2))
         (wert2 (wertVonBetrag betrag2))
         (waehrung (waehrung[[VonBetrag]] betrag1))
         (waehrung (waehrungVonBetrag betrag1))
         (summe (+ wert1 wert2))
         (summe (+ wert1 wert2))
         )
         )
Zeile 96: Zeile 96:


;;; Test
;;; Test
; > (addiere[[WaehrungsgleicheBetraege]] (neuerGeldbetrag 2 'Euro) (neuerGeldbetrag 4 'Euro))
; > (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 ...
         (neuer[[GeldbetragInEuro1]] (nachEuro betrag1))
         (neuerGeldbetragInEuro1 (nachEuro betrag1))
         (neuer[[GeldbetragInEuro2]] (nachEuro betrag2))
         (neuerGeldbetragInEuro2 (nachEuro betrag2))
         )
         )
     ; ... addiere mit addiere[[WaehrungsgleicheBetraege]]
     ; ... addiere mit addiereWaehrungsgleicheBetraege
     (addiere[[WaehrungsgleicheBetraege]] neuer[[GeldbetragInEuro1]] neuer[[GeldbetragInEuro2]])))
     (addiereWaehrungsgleicheBetraege neuerGeldbetragInEuro1 neuerGeldbetragInEuro2)))
    
    


Bitte beachte, dass alle Beiträge zu Fachschaft_Informatik von anderen Mitwirkenden bearbeitet, geändert oder gelöscht werden können. Reiche hier keine Texte ein, falls du nicht willst, dass diese ohne Einschränkung geändert werden können.

Du bestätigst hiermit auch, dass du diese Texte selbst geschrieben hast oder diese von einer gemeinfreien Quelle kopiert hast (weitere Einzelheiten unter Fachschaft Informatik:Urheberrechte). ÜBERTRAGE OHNE GENEHMIGUNG KEINE URHEBERRECHTLICH GESCHÜTZTEN INHALTE!

Bitte beantworte die folgende Frage, um diese Seite bearbeiten zu können (<a href="/Fachschaft/wiki/index.php?title=Special:Captcha/help" class="internal">weitere Informationen</a>):

Abbrechen Bearbeitungshilfe (wird in einem neuen Fenster geöffnet)