Entwickler-Ecke

Sonstiges (Delphi) - Wortlänge


Philipp_Frank - Fr 28.02.03 15:26
Titel: Wortlänge
Hi, weiß jemand, wie man die mittlere Wortlänge eines textes aus memo1 bestimmt und ausgibt. Habe das in der schule und brauchte Hilfe.

Gruß Philipp :D


Alibi - Fr 28.02.03 15:29

Mit Pos, Copy und Length solltest du weiterkommen. :)


Philipp_Frank - Fr 28.02.03 15:39
Titel: s
Du, das agt mir jetzt nicht viel, hilfreicher wäre es in code, wenns geht. Muss das Montag abgeben und habe jetzt nur noch zwei Stunden heut am Schulpc und at home kein delphi.


Delete - Fr 28.02.03 20:13

Bestimme dir mit length jede Wortlänge, addiere alles auf und teile dies durch die Anzahl der Worte.

Das größte Problem dürfte sein zu unterscheiden, was ein Wort ist.


webmaker - Sa 01.03.03 13:14

würde das auch mit POS, Copy und Length machen, erstmal mit Pos die Zeichen, die bis zum ersten Leerzeichen gehen herausfindne, dann rauskopieren und aus dem alten String löschen, mit Length Länge prüfen, dann wieder von neuen...Das ganze natürlich in eine Schleife


tommie-lie - Sa 01.03.03 14:56

ohne Copy geht's auch:
Position des ersten Leerzeichens bestimmen (Pos). Wert speichern (gleichzeitig Länge des ersten Wortes). Nächstes Leerzeichen suchen. Diese Position von der ersten abziehen (zweites Wort). Drittes Leerzeichen suchen. Wert weider vom letzten Leerzeichen abziehen usw. Evtl alle Werte um eins minimieren, da ja das Leerzeichen nicht mitgezählt werden soll. Triffst du auf zwei Leerzeichen hintereinander (also ist die Differenz des aktuellen Leerzeichens und des vorherigen nur 1), dann erhöhst du den Counter nicht.



@Luckie: Wieso ist das ein Problem? Per Definition ist ein Wort eine Teil einer Zeichenkette, der links und rechts durch Leerzeichen getrennt ist. Also fängt bei jedem Leerzeichen ein neues Wort an. Ausnahmen sind mehrfache Leerzeichen, die man vorher rausfiltern muss.


wulfskin - Sa 01.03.03 15:29

tommie-lie hat folgendes geschrieben:
@Luckie: Wieso ist das ein Problem? Per Definition ist ein Wort eine Teil einer Zeichenkette, der links und rechts durch Leerzeichen getrennt ist. Also fängt bei jedem Leerzeichen ein neues Wort an. Ausnahmen sind mehrfache Leerzeichen, die man vorher rausfiltern muss.
Und was ist mit solchen Wörtern:
Zitat:
er mag, dass..
Zitat:
Spielt er heute?
Dafür gibt es noch mehrere Beispiele. Dashalb kann man sich nicht darauf verlassen, dass ein Wort durch 2 Leerzeilen abgetrennt ist. Du muss also Satzzeichen beachten und dann wird das ganze etwas komplexer.
Achja Philipp Frank, wie lange hast du den schon Informatik in der Schule, dass du solch eine anspruchsvolle Aufgabe bekommst?

Gruß wulfskin!


tommie-lie - Sa 01.03.03 18:04

stimmt, aber das Problem wurde in keinem hier vorgestellten Verfahren gelöst, wiel immer nur nach Leerzeichen gesucht wurde.


Delete - Sa 01.03.03 18:53

Jupp, das meinte ich mit Problem. Nur auf Leerzeichen prüfen reicht nicht.

Und alles, worüber ich länger als zwei Minuten nachdenken muß, gilt bei mir erstmal als Problem. :mrgreen: Deswegen habe ich auch erstmal nur den einfachneTeil der Frage beantwortet. :wink:


tommie-lie - Sa 01.03.03 19:04

Man könnte aus dem ganzen Text alle Satzzeichen (! ? , . ; : - _) entfernen (mit Pos und dann das Zeichen löschen). Oder aber man entfernt sämtliche Sonderzeichen (also auch sowas wie " und §). Dann kommt es drauf ob man Anführungszeichen noch als zum Wort zugehörig bezeichnet oder nicht. Ich glaube offiziell gehören Anführungszeichen auch nicht mehr zum Wort.


UGrohne - Sa 01.03.03 22:41

Warum geht ihr nicht einfach den Text in einer Schleife durch und prüft, ob ein zeichen ein Buchstabe ist( a-z, A-Z) am besten per ASCII-Code. Sobald es dies nicht ist, hört das Wort auf. Würde 2 Variablen verwenden, um mehrere hintereinander vorkommende Zeichen nicht als Wort zu zählen, also eine Variable für GeradeWort (Boolean) und eine für die Anzahl der Wörter, achja, und natürlich eine für die Anzahl der Buchstaben.

Hab mir noch keinen Code überlegt, aber so schwer sollte das doch eigentlich nicht sein, oder?

Gruß


Brueggendiek - Sa 01.03.03 22:46

Hallo!

UGrohne hat folgendes geschrieben:
prüft, ob ein zeichen ein Buchstabe ist( a-z, A-Z) am besten per ASCII-Code.


aber die Umläutchen nicht vergessen, gelle!

Gruß

Dietmar Brüggendiek


UGrohne - Sa 01.03.03 23:02

Brueggendiek hat folgendes geschrieben:

aber die Umläutchen nicht vergessen, gelle!



OK, die nehmer mal lieber rein.... :)