Programm um Texte in Wörter zu zerlegen unter Verwendung der Klassen string und ListenContainer
Schauen wir uns zunächst zerlegetext_neu.cpp an, und versuchen zu verstehen, wie dort ein Objekt der Klasse ContainerListe benutzt wird:
#include <string> #include <iostream> #include "Liste.h" #include "ListenContainer.h" using namespace std; bool istTrennzeichen(char zeichen, string trennzeichen) { for(int i=0;i<trennzeichen.size();i++) { if(zeichen == trennzeichen.at(i)) return true; } return false; } void zerlegeText(ListenContainer* mLC,string text,string trennzeichen) { int wortbeginn = 0; int wortende = 0; for(int i=0;i<text.size();i++) { if( !istTrennzeichen(text.at(i),trennzeichen) ) { wortbeginn = i; while( i+1<text.size() && !istTrennzeichen(text.at(i+1),trennzeichen) ) i++; wortende = i; mLC->append(text.substr(wortbeginn,wortende-wortbeginn+1)); } } } int main(void) { string text = "Das ist ein Text."; string trennzeichen = ".,;: "; ListenContainer mLC; //einige Tests vorab: mLC.append("Test0"); mLC.append("Test1"); mLC.append("Test2"); mLC.del(1); cout<<"GROESSE der Liste="<<mLC.getSize()<<endl; cout<<"Wort Nr."<<1<<":"<<mLC.get(1)<<endl; mLC.clear(); //einige Tests vorab: ENDE zerlegeText(&mLC,text,trennzeichen); cout<<"GROESSE der Liste="<<mLC.getSize()<<endl; for(int i=0;i<mLC.getSize();i++) cout<<"Wort Nr."<<i<<":"<<mLC.get(i)<<endl; }
Code 0-1: zerlegetext_neu.cpp
Aufgabe der Funktion zerlegeText()
Der Funktion int zerlegeText(ListenContainer* mLC,string text,string trennzeichen)
wird
das string-Objekt text
übergeben. Dieses soll in Wörter zerlegt werden. trennzeichen
enthält alle Zeichen, die als Trenner zwischen den Wörtern erlaubt sind und die nicht in den Wörtern vorkommen dürfen.
Schliesslich wird der Funktion ein Zeiger auf ein ListenContainer-Objekt mit dem Bezeichner mLC
übergeben. In diesem Objekt sollen die
Ergebnisse, also die einzelnen Wörter abgelegt werden.
Aufgabe der Funktion istTrennzeichen()
Der Funktion bool istTrennzeichen(char zeichen, string trennzeichen)
ist eine Hilffunktion
von zerlegeText()
. Sie liefert true
zurück, wenn der übergebene Buchstabe einer
der in dem übergeben String enthaltenen Trennzeichen entspricht, und ansonsten false
.
Aufgabe der main-Methode
Nach einem Test eines ListenContainer-Objekts, wird die Funktion zerlegeText()
in der main-Methode getestet.
Die main-Methode erzeugt ein Objekt mit dem Beispieltext, eines mit den Trennzeichen und
ein ListenContainer-Objekt, in dem die Ergebnisse gespeichert werden können, um die Funktion zerlegeText()
anschliessend aufzurufen.
Ablauf der Textzerlegung in der Funktion zerlegeText()
Das Zerlegen des Textes funktioniert nun in folgender Weise:
|
Hier ist der Ablauf in der Funktion zerlegeText() noch einmal als Struktogramm dargestellt:
Bild 0-1: Struktogramm zu zerlegeText()