Gepostet: |
sekunden | ||||||||||
Hallo zusmmen, ich hab seit heute mit haskell angefangnund bin ein blutiger Anfänger. ich hab 2 bitte an euch: 1) ein für anfänger gutes haskell buch in deutsch 2) die berechnung von sekunden, so dass wenn man 5 4 3 eingibt dann 18243 rauskommt also viel hab ich net geschafft: sekunden:: Int-> Int -> Int sekunden (x:y:z) = x* 3600 + y*60 + z da kriege ich aber fehler.... kann mir einer sagen wo und was ich ändern soll? THX |
|||||||||||
Zum Seitenanfang | |||||||||||
Gepostet: |
|||||||||||
Hallo, zu 1) Deutsche Haskell-Bücher sind mir gar nicht bekannt. Zu empfehlen ist Graham Huttons Programming in Haskell. zu 2.) Da sind gleich mehrere Fehler in der Funktion. Der Typ ist Int -> Int -> Int, d.h. zwei Eingabe-Parameter vom Typ Int und ein Rückgabewert vom Typ Int. Du brauchst aber offensichtlich drei Eingabe-Parameter + Rückgabewert. Dann weiter (x:y:z) heißt, x und y sind zwei Werte vom Typ irgendwas, z ist dann eine Restliste vom Typ [irgendwas], denn der : verknüpft ein Wert mit einer Liste. Deinem Funktionstyp nach solltest du die Funktionsdefinition also einfach so schreiben: sekunden x y z = ... . Viele Grüße, Siracusa |
|||||||||||
Zum Seitenanfang | |||||||||||
Gepostet: |
|||||||||||
ahh vielen Dank!!! jetzt angenommen ich hab eine liste mit vieln listen da drinne [[1,2][5,6]] un möchte eine liste ausgeben mit den werten und selbe Reihnfolge [1,2,,5,6] muss ich dann so schreiben ??? f::[Int]->[Int] f [xs] = [xs] ???? |
|||||||||||
Zum Seitenanfang | |||||||||||
Gepostet: |
|||||||||||
[Int] ist eine Liste mit Ints, [[Int]] wäre dann eine Liste von Listen mit Ints. Bei der Definition müsstest du unterscheiden zwischen leerer Liste und einer Liste mit mindestens einem Element und Restliste. Das sieht dann etwa so aus:f :: [[Int]] -> [Int]Ich würde empfehlen, du schaust dir erstmal ein Tutorial an (z.B. http://en.wikibooks.org/wiki/Haskell), um etwas besser in die Sprache reinzukommen. Viele Grüße, Siracusa |
|||||||||||
Zum Seitenanfang | |||||||||||
Gepostet: |
|||||||||||
hmm ich find keine gute seite, wo man es gut beigebraht bekommt... also hab deinem vorschlag befolgt und das ist rausgekommen. flach :: [[Int]] -> [Int] flach [] = [] flach (x:xs) = flach xs++ x und vielen dank es funzt :) |
|||||||||||
Zum Seitenanfang | |||||||||||
Gepostet: |
|||||||||||
Ich hab noch ne Frage, aber diesmal über wurzel. also ich weiss dass man so die wurzel berechnet: wurzel :: Double->Double -> Int wurzel x y= truncate (sqrt x) aber wie kann ich denn die n-te wurzel berechnen????? |
|||||||||||
Zum Seitenanfang | |||||||||||
Gepostet: |
|||||||||||
Hhm, dazu gibt es im Prelude soweit ich weiß keine Funktion. Du kannst auf Hackage (http://hackage.haskell.org) nachschauen, da gibt es garantiert eine Mathe-Bibliothek die sowas kann. Ansonsten bleibt noch die Umrechnung: n-te Wurzel aus x = exp (log x / n). Viele Grüße, Siracusa |
|||||||||||
Zum Seitenanfang | |||||||||||
Gepostet: |
|||||||||||
1) also ich darf nur teilweise die vordefinierte funktionen benutzen: also ich hab mir so über legt: angenommen x = 4 , und da ich die 3-te wurzel berechnen muss mach ich dann so: 1 ^3 = 1 < 4 2^3 = 8 > 4 also das ergebnis ist dann 1. wurzel1 :: Int -> Int wurzel1 x = if( ( x - ( x-1 ) ) ^3 < x ) so weit bin ich schon gekommen weiss aber net weiter .... kann mir einer helfen? 2) ich hab ne liste [1,2,5,4,7] und möchte ne zahl einfügen z.b. 4und dann diese liste sortieren. also so: 4[1,2,4,4,5,7] kann mir da auch einer hefen pls?? einfüge :: Int -> [Int]-> [Int] einfüge x [] = 0 einfügen x (y:ys) = if (x==y) then einfügen x ys |
|||||||||||
Zum Seitenanfang | |||||||||||
Gepostet: |
|||||||||||
zu 1.) Also willst du nur ganzzahlige Wurzeln berechnen? Dann brauchst du bei deiner Funktion einen Int-Parameter n, der am Anfang 0 ist und bei jeder Rekursion um 1 erhöht wird. Wenn dann (n+1)^3 > x ist, ist n die ganzzahlige Wurzel. zu 2.) Zu dem if/then gehört in Haskell immer ein else. Schau dir mal Guards an ("http://en.wikipedia.org/wiki/Guard_(computing)"), wenn du die statt if/then/else benutzt wird's vermutlich einfacher und übersichtlicher. Viele Grüße, Siracusa |
|||||||||||
Zum Seitenanfang | |||||||||||