www.jammni.de

Logo - Kleiner Drache
Login
Username:

Passwort:

Daten merken
Auto-Login
Registrieren
 
Online
niemand
 
Forumsuche
Suche nach:

Logo - DracheHaskell-Forum

vorherige Seite 1 2 3  

Jacke

Gepostet:
28.08.2005 22:19

   
so hier ist musterB

import IO

umbruch = "\n"

muster2 :: (Int, Int) -> String
muster2 (0, n) = (striche n) ++ umbruch
muster2 (1, n) = (striche n) ++ "*" ++ umbruch
muster2 (s, n) = striche(n) ++ sternchen(s) ++ umbruch ++ muster2(s - 2, n + 1)

sternchen :: Int -> String
sternchen 0 = ""
sternchen 1 = "*"
sternchen n = sternchen(n - 1) ++ "*"

striche :: Int -> String
striche 0 = ""
striche 1 = "-"
striche n = striche(n - 1) ++ "-"

musterB :: Int -> IO()
musterB x = putStr (muster2(x, 0))


genug programmiert für heute ...:-)
Zum Seitenanfang    
 
Jacke

Gepostet:
29.08.2005 18:24

   
so das ist die letzte lösung:

import IO

umbruch = "\n"


muster1 :: (Int, Int) -> String
muster1 (n, 0) = sternchen(n) ++ umbruch
muster1 (n, 1) = "-" ++ sternchen(n) ++ umbruch
muster1 (s, n) = striche(n) ++ sternchen(s) ++ umbruch ++ muster1(s +2, n -1)


muster2 :: (Int, Int) -> String
muster2 (0, n) = (striche n) ++ umbruch
muster2 (1, n) = (striche n) ++ "*" ++ umbruch
muster2 (s, n) = striche(n) ++ sternchen(s) ++ umbruch ++ muster2(s - 2, n + 1)

sternchen :: Int -> String
sternchen 0 = ""
sternchen 1 = "*"
sternchen n = sternchen(n - 1) ++ "*"

striche :: Int -> String
striche 0 = ""
striche 1 = "-"
striche n = striche(n - 1) ++ "-"

musterC :: Int -> IO()
musterC x = putStr (muster1(1,(x `div` 2))++ muster2(x, 0))
Zum Seitenanfang    
 
Icegirl

Gepostet:
31.08.2005 20:12

   
hallo, sorry war davor die tage nur am programmieren, exprementieren und testen. mittlerweile klappt alles DANKE schön .
Zum Seitenanfang    
 
Jacke

Gepostet:
31.08.2005 20:54

   
ja na klar...kannst mir ruhig neue aufgaben geben...ich mach im moment grad praktikum und da ist mir eh langweilig...Smilie
Zum Seitenanfang    
 
Icegirl

Gepostet:
31.08.2005 21:50

   
was für ein praktikum, wenn ich fragen darf?
ich lass es es nicht zweimal sagen mit aufgaben ;) denn bin sowas von schlecht in haskell...Smilie
Smilie


Aufgabe 1:
Der Morsecode soll "hörbar" gemacht werden. Da uns die Soundkarte fehlt, behelfen wir uns auf diese Art: Ein Punkt in "di", der Strich mit "da" übersetzt. Am Codeende wird "di" zu "dit" und "da" zu "daa".
Schreiben Sie eine Funktion morsesound, die auf die bisherigen Funktionen zugreift und z.b. "SOS" mit "dididit dadadaa dididit" wiedergibt. Schreiben Sie eine entsprechenende Entschlüsselungsfunktion.
Beispiel:
moresound "SOS" ----> "dididit dadadaa dididit"

VIELEN VIELEN DANK
Zum Seitenanfang    
 
Jacke

Gepostet:
01.09.2005 21:22

   
so das sind alle antworten:

morsecode=[('A',".-"),('B',"-..."),('C',"-.-."),('D',"-.."),('E',"."),('F',"..-."),('G',"--."),('H',"...."),('I',".."),('J',".---"),('K',"-.-"),('L',".-.."),('M',"--"),('N',"-."),('O',"---"),('P',".--."),('Q',"--.-"),('R',".-."),('S',"..."),('T',"-"),('U',"..-"),('V',"...-"),('W',".--"),('X',"-..-"),('Y',"-.--"),('Z',"--..")]


tomorse :: Char->String
tomorse b =tomorse2((morsecode),b)


tomorse2 :: ([(Char, String)],Char) -> String
tomorse2 ([],b)=""
tomorse2 (((n, m):xs),b)
| b==n = m
|otherwise = tomorse2(xs,b)


tozeichen :: String->Char
tozeichen b =tozeichen2((morsecode),b)


tozeichen2 :: ([(Char, String)],String) -> Char
tozeichen2 ([],s)=' '
tozeichen2 (((n, m):xs),s)
| s==m = n
|otherwise = tozeichen2(xs,s)
--textkodieren "AbC" ----> [".-","-...","-.-."]

textkodieren::String ->[String]
textkodieren []=[]
textkodieren (x:xs)=tomorse(toUpper(x)):textkodieren(xs)

textdekodieren::[String] ->String
textdekodieren []=[]
textdekodieren (x:xs)=(tozeichen(x)):textdekodieren(xs)



alph=[('A','a'),('B','b'),('C','c'),('D','d'),('E','e'),('F','f'),('G','g'),('H','h'),('I','i'),('J','j'),('K','k'),('L','l'),('M','m'),('N','n'),('O','o'),('P','p'),('Q','q'),('R','r'),('S','s'),('T','t'),('U','u'),('V','v'),('W','w'),('X','x'),('Y','y'),('Z','z')]

toUpper2::([(Char,Char)],Char)->Char
toUpper2 ([],b)=' '
toUpper2 (((n, m):xs),b)
| b==n = n
| b==m = n
|otherwise = toUpper2(xs,b)

toUpper::Char ->Char
toUpper b= toUpper2 (alph,b)

moressound ::[String]->String
moressound []=""
moressound (x:xs) = moressound2(x)++moressound(xs)

moressound2::String->String
moressound2 (x:[])
|x=='.' ="dit "
|otherwise ="daa "
moressound2 (x:xs)
|x=='.' ='d':'i' : moressound2(xs)
|otherwise ='d':'a': moressound2(xs)


die mapsache mache ich dann morgen^^ ist doch ganz schön viel schreibarbeit
dafür funktioniert alles...

ich mach ein praktikum 12 wöchiges in nen wissenschaftlichen institut...und programmier da ne anwendung in perl und java...

gruß jacke
Zum Seitenanfang    
 
Icegirl

Gepostet:
04.09.2005 12:35

   
so hab die erste aufgabe auch selber codiert und habe mit deins überprüft und es funktioniert *froi*
nur mitm morsesound funktioniert nicht, muss mir gleich nochmal deins näher angucken, wie du es geschrieben hast.
du? in haskell ist doch "toUpper" und "map" feste Funktionen oder? warum zeigt es mir immer fehler an, dass es gar nicht definiert sind?
mir gefällt lieber java oder php, aber muss wohl noch ein halbes jahr lang mit haskell durchquälen Smilie
ich kann mich nur bedanken Smilie , dass es mir sehr hilft, denn so kann ich halt korrigieren und weiß in etwa wo meine fehler sind
Zum Seitenanfang    
 
Jacke

Gepostet:
05.09.2005 08:21

   
also map ist ne feste Funktion...und toUpper auch
aber ich mußte mir das toUpper auch nach programmieren

das hier ist die richtige deklaration von toUpper(so wie wir das in der uni hatten)

ord::Char->Int
chr ::Int ->Char

offset::Int
offset=ord 'A' - ord 'a'

toUpper::Char->Char
toUpper ch= chr (ord ch + offset)

Zum Seitenanfang    
 
Jacke

Gepostet:
05.09.2005 08:24

   
man kann das offset natürlich auch in die toUpper Funktion mit reinnehmen...das würde dann so aussehen:

ord::Char->Int
chr ::Int ->Char

toUpper::Char->Char
toUpper ch=chr (ord ch + (ord 'A' - ord 'a' ))


Smilie
Zum Seitenanfang    
 
Icegirl

Gepostet:
07.09.2005 23:44

   
ah danke schön, ich glaub, ich sollte mal öfters im net sein um dir schneller zu antworten. also bedanke mich herzlich.
wünsch dir dann mal einen schönen abend
Smilie
Zum Seitenanfang    
 

vorherige Seite 1 2 3