Wörter in einem String zählen mit Pascal?

2 Antworten

Mein Vorschlag:

Man führt eine boolsche Variable ein, die anzeigt, dass auf einen Buchstaben gewartet wird (ich nenne sie hier WAB für "WarteAufBuchstabe").

WAB wird auf true initialiert und die Zeichenkette abgeklappert.

Wenn das aktuelle Zeichen kein Buchstabe ist, dann wird WAB = true gesetzt.

Wenn es ein Buchstabe ist und WAB = false ist, dann passiert nichts.

Wenn aber WAB = true ist, wird das neu erkannte Wort gezählt und WAB = false gesetzt.

Man würde normalerweise dafür reguläre Ausdrücke verwenden. Die meisten Programmiersprachen bieten hierfür eine Klasse, die die notwendigen Funktionen bereit stellt.

Zufuß als Übung in vereinfachter Form könntest du alle Punkte, Kommas, Semikolons, Ausrufungszeichen und Fragezeichen durch Leerzeichen ersetzten, dann in einer Schleife doppelte Leerzeichen durch einfache ersetzen, bis es nichts mehr zu ersetzen gibt und zum Schluss die Länge der resultierenden Zeichenkette mit der Länge der Zeichenkette vergleichen, in der du alle Leerzeichen gelöscht hast.

Oder du gehst direkt alle Zeichen durch und erhöhst den Wortzähler, wenn das letzte Zeichen ein Buchstabe war und das aktuelle nicht.
Ein Zeichen kannst du über den ASCII-Code gut erkennen und abfragen, also wenn der Code >=65 und <= 90 oder >= 97 und <= 122 ist oder ein deutscher Umlaut (äöüÄÖÜß).

Du kannst auch das Zeichen an der aktuellen Position einfach Upper setzen und in "ABCDEFGHIJKLMNOPQRSTUVWXYZÄÖÜß" suchen. (Das große ß wird selten genutzt. Die meisten Upper-Befehle verändern ß nicht zu ẞ.

Woher ich das weiß:Berufserfahrung – Programmierer

Amyyamy 
Fragesteller
 28.11.2022, 10:34

@Suboptimierer .... ich verstehe gar nichts von dem.......

1
Suboptimierer  28.11.2022, 10:43
@Amyyamy

Ich habe die Antwort noch ein bisschen überarbeitet. Vielleicht findest du dich jetzt darin besser zurecht.

0