Gepostet: |
Fehlermeldung: Undefined type constructor | ||||||||||
Hallo liebe HaskellGemeinde! ich bin Einsteiger und hab vorher keine Sprache gelernt. Mein Programm compiliert nicht. Hab die Suche genutzt -nix. Wäre sehr dankbar wenn mir vielleicht hier jemand helfen könnte? Mein Code ist:
Der Compiler sagt: ERROR file:.\\\\\\\\\\\\\\\\dreiWerte.hs:4 - Undefined type constructor \\\\\\\\\\\\\\\"Str\\\\\\\\\\\\\\\" Anmerkung: Die Backslashes überall wo ein String ist sind nicht von mir sondern von Jammi. Kann ich nicht abstellen. Wo ist denn der Fehler? Hab dann erst blind versucht das putStrLn wegzulassen -nix. Andere Idee hab ich nicht mehr. Ich weiß nicht was er hat :( Gruß SanjoNinjaPanda |
|||||||||||
Zum Seitenanfang | |||||||||||
Gepostet: |
Berichtigung | ||||||||||
Sorry Doppelpost! | |||||||||||
Zum Seitenanfang | |||||||||||
Gepostet: |
|||||||||||
Hallo. 1.: Tatsächlich das putStrLn weglassen. 2.: Er kennt den Typ Str nicht. Das ganze ist ein String. Dann schreibe das auch oben in die Typdeklaration. |
|||||||||||
Zum Seitenanfang | ICQ | ||||||||||
Gepostet: |
|||||||||||
Noch mehr Fehler: Der Durchschnitt wäre rein mathematisch (a+b+c)/3 und nicht (a+b+c)/2. Allerdings gibt es noch ein Problem mit /, weil das nur für Realzahlen definiert ist, nicht für Ganzzahlen: Dort lautet der entsprechende Operator div, aber du willst ja sicher den exakten Durchschnitt, nicht die abgerundete Version. Ich würde vorschlagen, gleich mit Realzahlen zu arbeiten (ansonsten müsstest du die Funktion fromIntgral verwenden). Also definieren wir erst einmal den Durchschnitt:
Nun suchen wir noch einen einfacheren Weg, um die Anzahl der Werte kleiner/gleich/größer dem Durchschnitt zu bestimmen. Mit filter können wir alle Elemente einer Liste ermitteln, die ein gegebenes Kriterium erfüllen, und mit length ermitteln wir die Länge der Ergebnisliste:
Das sieht sehr nach Wiederholung aus, also vergessen wir diese Funktionen gleich wieder und verallgemeinern sie lieber zu einer einzigen, der wir noch den gewünschten Operator übergeben:
Jetzt können wir map verwenden, um die die verschienedenen Operationen bequem an cmp zu \"verteilen\":
Das Ergebnis ist eine Liste mit der Anzahl der kleineren, gleichen und größeren Elementen. Jetzt ist dreiWerte trivial:
Ich hoffe, ich habe dich jetzt nicht zu sehr verwirrt... |
|||||||||||
Zum Seitenanfang | |||||||||||
Gepostet: |
|||||||||||
Dankeschön Viviane genau die beiden Sachen waren es. @ Landei: Wow! Ich verstehe es noch nicht ganz. Kann ich morgen eine Frage dazu stellen? |
|||||||||||
Zum Seitenanfang | |||||||||||
Gepostet: |
|||||||||||
Jederzeit :-) | |||||||||||
Zum Seitenanfang | |||||||||||
Gepostet: |
|||||||||||
Ich sehe gerade, dass du nur wissen willst, wieviel Werte größer als der Durchschnitt sind (und nicht, wieviel kleiner oder gleich sind). Dann reicht avg und bigger aus:
|
|||||||||||
Zum Seitenanfang | |||||||||||