www.jammni.de

Logo - Kleiner Drache
Login
Username:

Passwort:

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

Logo - DracheHaskell-Forum

  1 2 3 nächste Seite

Icegirl

Gepostet:
18.08.2005 17:00

Brauche dringend Hilfe in Haskell  
Hallo, also brauche dringend hilfe bei Haskell. Da ich noch nie mit damit gearbeitet hab. Vielleicht kann mir ein oder andere helfen. Bin am zweifeln, ob das überhaupt jemand kann...

Die Funktion nmal gibt einen String n-mal hintereinander auf dem Bildschirm aus. Gib die Typsignatur sowie die Funktionsdefinition an.

Aufgabe 3: Schreibe die Funktionen zur Berechnung folgender Summen:
3. s3 = 4 - 4/3 + 4/5 - 4/7 + - ... 4/(2*n-1)


Danke im voraus, wenn ihr hilft. Ihr sollt ja nicht alle Aufgaben machen sondern, den den ihr könnt. Wie ihr seht, ich kanns nit...Smilie
Zum Seitenanfang    
 
Jacke

Gepostet:
20.08.2005 19:28

   
na ich lös mal spontan die zweite aufgabe^^...also

nmal::(String,Int)->String
nmal (nenstring,0)=nenstring
nmal (nenstring,zahl)=nmal(nenstring+nenstring,zahl-1)


4)
grcodi::Int->Int->Int
grcodi a b
|a==b =a
|a>b =a-b
|otherwise =b-a


die anderen mach ich dir morgen...falls es syntax fehler gibt sag mir bescheid dann werd ich mir nochmal hugs installierenSmilie
Zum Seitenanfang    
 
Jacke

Gepostet:
20.08.2005 20:53

   
so die erste aufgabe

a::(Int,Int) ->Int
a (k,0)=0.2
a (k,n) =k*a(k,n-1)*(1-a(k,n-1))



und ohne das k in den eingangsparametern

k=2

a::Int ->Int
a (0)=0.2
a (n) =k*a(n-1)*(1-a(n-1))


Smilie

und die dritte Aufgabe

s1::Int ->Int
s1 0=0
s1 n=s1(n-1)+n*n

s2::Int ->Int
s2 0=0
s2 n=s2(n-1)+1/n

s3::Int ->Int
s3 0=4
s3 n=s2(n-1)+4/(2*n-1)


so und dann noch die 5te Aufgabe

hof::Int ->Int
hof (1) = 1
hof (2) = 1
hof (n) = hof (n-hof (n-1)) + hof(n-hof (n-2))

Smilie

gruß jacke
Zum Seitenanfang    
 
Icegirl

Gepostet:
21.08.2005 21:11

   
hey, danke, bin gerade total am zweifeln... und mecker jeden an, der mir in den quere kommt.. =(
Zum Seitenanfang    
 
Jacke

Gepostet:
22.08.2005 13:20

   
aber die anderen aufgaben funktionieren schonmal ja?
also ich hab jetzt grade keinen haskellinterpreter zur hand...(bin grade auf arbeit)
also 1) kann man auch so machen:

k=2

a::Int ->Int
a 0=0.2
a n=a(n-1)*k*(1-a(n-1))


aufgabe 2)

s="WORT"
nmal::Int->String
nmal 0=s
nmal n=s+ nmal(n-1)


Smiliegruß jacke

ps: das ziel der aufgaben ist es das du weißt wie rekursion in haskell funktioniert ...
du setzt dir bei jeder aufgabe einen rekursionsanker zum beispiel bei 1) ist a 0=0,2
und dann rufst du die funktion mit abfallenden Index immer wieder auf....und irgendwann kommst du dann beim Rekursionsanker an+
Zum Seitenanfang    
 
Icegirl

Gepostet:
22.08.2005 20:31

   
mehr oder weniger habe ich an den aufgaben herum exprementiert, weiß nur nicht, ob die nun richtig sind ;)
weiß schon, wie rekursion funktioniert, aber irgendwie ist es doof... aber nun gut, muss mich wohl dadurch wälzen. auf jeden fall danke für deine hilfe ^^' wenn ich weitere fragen habe, weiß ich, dass ich hier gut dran bin und das heißt ich werde öfters wohl fragen... hoffe dir macht das nichts aus? Smilie
Zum Seitenanfang    
 
Jacke

Gepostet:
23.08.2005 09:20

   
nö das stört mich nichSmilie ich helf dir doch gerne
du aufgaben sind richtig wenn sie funktionieren...bei Programmieren ist es immer so das viele wege zum Ziel führen...Smilie

gruß jacke
Zum Seitenanfang    
 
Icegirl

Gepostet:
25.08.2005 08:58

   
So, vorher kannst du so gut Haskell? habe ich keine Lust mehr auf sowas. Find es so krass ätzend... Smilie
Habe wieder neue Aufgaben...

Alles Rekursion -.-"

Eine Funktion gibtNtesElement soll zu einer beliebigen Liste das n-te Element liefer ( 0 < n < laenge -1)
Bsp: gibtNtesElement "Hello World" 4 (Ergebnis o)

Schreibe eine Funktion zaehlen und fett enthalten, die beide eine Liste und ein Element enthalten. zaehlen liefert die Häufigkeit, wie oft das Element in der Liste enthalten ist, enthalten liefert True ,wenn das Element mindestens einmal in der Liste enthalten ist.
Bsp: enthalten [2,5,7,9] 4 (Ergebnis: False)
zaehlen "Hello World" '1' (Ergebnis: 3)

Schreiben Sie Funktionen musterA, musterB und musterC, die folgende Sternchenmuster auf dem Bildschrim ausgeben. Dabei sollte die Höhe der Figur frei wählbar sein.
(a) musterA 9

*********
********
*******
******
*****
****
***
**
*

(b) musterB

*********
-*******
--*****
---***
----*

(die Bindestriche sollen Leerzeichen darstellen)

(c)

----*
---***
--*****
-*******
*********
-*******
--*****
---***
----*

(die Bindestriche sollen Leerzeichen darstellen)


So wäre halt nett, wenn du mir wieder helfen könntest, wo du kannst und weiteres werd ich wieder herum exprementieren Smilie Danke schön
Zum Seitenanfang    
 
Jacke

Gepostet:
25.08.2005 14:30

   
also ich mach erstmal die erste ich beantworte die anderen fragen aber noch nachher^^

also gib n -tes Element sieht so aus
da wir den Typ der Eingabeliste nicht genau kennen nehmen wir einen generischen typen...wir können das mit den typen aber auch weglassen das ist Haskell nämlich egal :-)
Listen macht man übrigens mit [] also ne Liste von Ints sieht dann so aus [Int] und als Eingabe dann so (1,2,3,4)
die Liste ist hier also kopf:rest...kopf ist das erste Element der Liste und rest der Rest der Liste
der : Operator fügt dann beides zusammen

gib:: ([a],Int)->Int   ---die zeile ist nicht so wichtig...:-) aber man gibt sie mit an
gib (kopf:rest, 0)=kopf
gib (kopf:rest, n)=gib (rest, n-1)


so das dürfte eigentlich funktionieren...:-)
ich werde ab hier den kopf der Liste immer x nennen und den rest xs...ist kürzer

ok die zweite aufgabe ist schon etwas Schwieriger:
also wir hören auf wenn wir die ganze liste durchlaufen haben...die Striche müssen eingerückt sein sonst funktionierts nicht

enthalten::([a],a)->Bool
enthalten [] b=False
enthalten x:xs b
|x==b =True
|otherwise enthalten(x,b)



ich hatte haskell im ersten Semester an der Uni...bin jetzt übrigens schon im 4ten

gruß jackeSmilie
Zum Seitenanfang    
 
Jacke

Gepostet:
25.08.2005 14:47

   
zaehlen::([a],a)->Int
zaehlen [] b=0
zaehlen x:xs b
|x==b =zaehlen(xs,b)+1 ---nich vergessen hier einzurücken
|otherwise =zaehlen(xs,b) ---hier auch



hmm ich bin mir nicht ganz sicher ob die musteraufgaben so funktioniert ich mach das mal heute abend...
Zum Seitenanfang    
 

  1 2 3 nächste Seite