Gepostet: |
Programm was die anzahl von Buchstaben angibt | ||||||||||
Hi, ich muss ein programm schreiben, was die Anzahl von buchstaben und sonderzeichen eines strings angibt. Habe aber keine ahnung wie ich das problem anpacken soll. Das Programm soll die anzahl jedes einzelnen buchstabens eines strings in alphabetischer Reihenfolge wiedergeben. Sonderzeichen und Leezeichen sollen unter '?' zusammengefasst werden. Es soll auch zwischen Groß- und Kleinbuchstaben unterschieden werden. Das Programm soll folgende Signatur haben: anzahl :: String -> [(Char,Int)] Hier mal ein Beispiel wie es funktionieren soll: anzahl "Haskell 98" == [('a',1),('e',1),('k',1),('l',2),('s',1),('H',1),('?',3)] Ich wäre euch für jede Hilfe dankbar. |
|||||||||||
Zum Seitenanfang | |||||||||||
Gepostet: |
|||||||||||
ich hoffe das hilft dir ein bisschen weiter ... gruß jacke |
|||||||||||
Zum Seitenanfang | |||||||||||
Gepostet: |
|||||||||||
Danke für die Hilfe, aber ich habe noch ein paar Fragen zur Verständlichkeit des Programms. 1. Warum muss die Signatur so aussehen: anzahl :: String -> [(Char,Integer)] -> [(Char,Integer)] und geht es nicht auch irgendwie anders? 2.Sind die ganzen Befehle wie: "list", "inlist" und "count" in HAskell integriert und was genau machen sie? Ich wäre euch sehr dankbar für eine Antwort. |
|||||||||||
Zum Seitenanfang | |||||||||||
Gepostet: |
|||||||||||
nein list und count sind nen variablennamen... inlist ist ne funktion die ich mir selber definiert habe...nach dem schlüßelwort where habe ich mir eine eigene funktion definiert,...die hab ich inlist genannt hätte sie auch blubblub nennen können ich hätte inlist auch als extra funktion schreiben können...dann hätte sie so ausgesehen und der teil nach dem where wäre weggefallen:
istBuchstabe ist auch eine von mir selbstgeschriebene funktion...die hätte man auch extra machen können...nach where kann man sovielfunktionen definieren wie man will...hauptsache sie sind eingerückt du kannst natürlich auch deine eigene signatur verwenden
|
|||||||||||
Zum Seitenanfang | |||||||||||
Gepostet: |
|||||||||||
danke, ich habe aber immernoch Fragen: Was genau macht die Funktion "inlist"? Wofür steht "list"? Was macht "istBuchstabe" und wofür steht "chr"? was bringt diese Zeichen: || ? Das wars ertmal. Danke nochmal für die Hilfe. |
|||||||||||
Zum Seitenanfang | |||||||||||
Gepostet: |
|||||||||||
list ist ein accumulator und darin befindet sich die aktuelle liste...bei jeden durchlauf der rekursion werden element zu der liste list hinzugefügt...oder der zähler wird erhöht wenn der buchstabe schon drin ist... und inlist macht genau das...es kuckt ist das element schon in der liste drin wenn ja dann erhöht sie den zähler...wenn nein dann fügt sie ein element zur liste hinzu mit wert 1 inlist x []= ((x,1):[]) <---das wird hier gemacht inlist x ((c,count):list) <---(c,count) ist das erste tupel der liste |(x==c) =(c,(count+1)): list<---und hier vergleicht man ob man den richtigen buchstaben gefunden hat also ob der buchstabe x = dem c aus dem ersten tupel | otherwise = (c,count): (inlist x list)<---und ansonsten ruft man rekursiv den rest der liste auf...bis man am ende ist |
|||||||||||
Zum Seitenanfang | |||||||||||