Datenstruktur korrigiert und vereinfacht.

This commit is contained in:
Jim Martens 2013-11-21 14:07:22 +01:00
parent 5d3323e75e
commit 2b4c538135
1 changed files with 92 additions and 118 deletions

View File

@ -13,131 +13,105 @@ Abgebende: Jim 2martens, Britta 2noack, Jan-Simon 0giesel
; Die Rückgabe einer Liste mit dem Buchstaben an erster Stelle und einer ; Die Rückgabe einer Liste mit dem Buchstaben an erster Stelle und einer
; Liste als zweitem Element, die wiederum den Schlüssel an erster Stelle ; Liste als zweitem Element, die wiederum den Schlüssel an erster Stelle
; enthält, erlaubt ein einfaches Auswerten der Zuordnung. ; enthält, erlaubt ein einfaches Auswerten der Zuordnung.
(define (daten char) (define buchstabiertafel
(case (char->integer char) '((#\A . Alfa)
([65] (list char 'Alfa)) (#\B . Bravo)
([66] (list char 'Bravo)) (#\C . Charlie)
([67] (list char 'Charlie)) (#\D . Delta)
([68] (list char 'Delta)) (#\E . Echo)
([69] (list char 'Echo)) (#\F . Foxtrott)
([70] (list char 'Foxtrott)) (#\G . Golf)
([71] (list char 'Golf)) (#\H . Hotel)
([72] (list char 'Hotel)) (#\I . India)
([73] (list char 'India)) (#\J . Juliett)
([74] (list char 'Juliett)) (#\K . Kilo)
([75] (list char 'Kilo)) (#\L . Lima)
([76] (list char 'Lima)) (#\M . Mike)
([77] (list char 'Mike)) (#\N . November)
([78] (list char 'November)) (#\O . Oscar)
([79] (list char 'Oscar)) (#\P . Papa)
([80] (list char 'Papa)) (#\Q . Quebec)
([81] (list char 'Quebec)) (#\R . Romeo)
([82] (list char 'Romeo)) (#\S . Sierra)
([83] (list char 'Sierra)) (#\T . Tango)
([84] (list char 'Tango)) (#\U . Uniform)
([85] (list char 'Uniform)) (#\V . Viktor)
([86] (list char 'Viktor)) (#\W . Whiskey)
([87] (list char 'Whiskey)) (#\X . X-ray)
([88] (list char 'X-ray)) (#\Y . Yankee)
([89] (list char 'Yankee)) (#\Z . Zulu)
([90] (list char 'Zulu)) (#\0 . Nadazero)
([48] (list char 'Nadazero)) (#\1 . Unaone)
([49] (list char 'Unaone)) (#\2 . Bissotwo)
([50] (list char 'Bissotwo)) (#\3 . Terrathree)
([51] (list char 'Terrathree)) (#\4 . Kartefour)
([52] (list char 'Kartefour)) (#\5 . Pantafive)
([53] (list char 'Pantafive)) (#\6 . Sosisix)
([54] (list char 'Sosisix)) (#\7 . Setteseven)
([55] (list char 'Setteseven)) (#\8 . Oktoeight)
([56] (list char 'Oktoeight)) (#\9 . Novenine)
([57] (list char 'Novenine)) (#\, . Decimal)
([44] (list char 'Decimal)) (#\. . Stop)
([46] (list char 'Stop)) ))
)
)
; 1.2 ; 1.2
(define (char->schlüssel char) (define (char->schlüssel char tafel)
(car (cdr (daten char)))) (cdr (assoc (char->upper char) tafel)))
; 1.3 ; 1.3
(define char_to_upperCase (λ (myChar) (define (char->upper char)
; x als ASCII Wert für myChar definieren (let ([charInt (char->integer char)])
(define x (char->integer myChar)) (cond ([<= 96 charInt 122] (integer->char (- charInt 32)))
; y als x-32 definieren ([<= 65 charInt 90] (integer->char charInt))
(define y (- x 32)) (else char))))
; wenn x < 91 (bereits upperCase) myChar direkt zurückgeben
(if (< x 91)
; wenn myChar bereits upperCase ist, direkt zurückgeben
myChar
; andernfalls wird y zurückgegeben
(when (> x 96)
; y stellt den gleichen Buchstaben wie x dar, bloß in upperCase
; daher wird y zurückgegeben
(integer->char y)))))
; 1.4 ; 1.4
(define (buchstabiere text) (define (buchstabiere text tafel)
(let ([xs (string->list text)]) (letrec ((rec (λ (xs)
(if [empty? xs] (if (null? xs)
'() null
(cons (char->schlüssel (char_to_upperCase(car xs))) (buchstabiere (list->string (cdr xs)))) (cons (char->schlüssel (car xs) tafel)
) (rec (cdr xs)))))))
)) (rec (string->list text))))
(require se3-bib/flaggen-module) (require se3-bib/flaggen-module)
; 2.1 ; 2.1
; Analoger Entwurf wie bei 1.1, diesmal mit den Flaggen. ; Analoger Entwurf wie bei 1.1, diesmal mit den Flaggen.
(define (flaggenData char) (define flaggentafel
(case (char->integer char) `((#\A . ,A)
([65] (list char A)) (#\B . ,B)
([66] (list char B)) (#\C . ,C)
([67] (list char C)) (#\D . ,D)
([68] (list char D)) (#\E . ,E)
([69] (list char E)) (#\F . ,F)
([70] (list char F)) (#\G . ,G)
([71] (list char G)) (#\H . ,H)
([72] (list char H)) (#\I . ,I)
([73] (list char I)) (#\J . ,J)
([74] (list char J)) (#\K . ,K)
([75] (list char K)) (#\L . ,L)
([76] (list char L)) (#\M . ,M)
([77] (list char M)) (#\N . ,N)
([78] (list char N)) (#\O . ,O)
([79] (list char O)) (#\P . ,P)
([80] (list char P)) (#\Q . ,Q)
([81] (list char Q)) (#\R . ,R)
([82] (list char R)) (#\S . ,S)
([83] (list char S)) (#\T . ,T)
([84] (list char T)) (#\U . ,U)
([85] (list char U)) (#\V . ,V)
([86] (list char V)) (#\W . ,W)
([87] (list char W)) (#\X . ,X)
([88] (list char X)) (#\Y . ,Y)
([89] (list char Y)) (#\Z . ,Z)
([90] (list char Z)) (#\0 . ,Z0)
([48] (list char Z0)) (#\1 . ,Z1)
([49] (list char Z1)) (#\2 . ,Z2)
([50] (list char Z2)) (#\3 . ,Z3)
([51] (list char Z3)) (#\4 . ,Z4)
([52] (list char Z4)) (#\5 . ,Z5)
([53] (list char Z5)) (#\6 . ,Z6)
([54] (list char Z6)) (#\7 . ,Z7)
([55] (list char Z7)) (#\8 . ,Z8)
([56] (list char Z8)) (#\9 . ,Z9)
([57] (list char Z9))
)
)
; 2.2
(define (char->flagge char)
(car (cdr (flaggenData char))))
; 2.3
(define (buchstabiereFlagge text)
(let ([xs (string->list text)])
(if [empty? xs]
'()
(cons (char->flagge (char_to_upperCase(car xs))) (buchstabiereFlagge (list->string (cdr xs))))
)
)) ))