From 33613a85afc4b1481367fbe92a17ee59c240250b Mon Sep 17 00:00:00 2001 From: Sven Eisenhauer Date: Fri, 10 Nov 2023 15:11:48 +0100 Subject: add new repo --- Bachelor/Prog2/Prakt4/Max.txt | 67 +++++++++++ Bachelor/Prog2/Prakt4/aufg1/.cdtbuild | 25 ++++ Bachelor/Prog2/Prakt4/aufg1/.cdtproject | 18 +++ Bachelor/Prog2/Prakt4/aufg1/.project | 19 +++ Bachelor/Prog2/Prakt4/aufg1/Debug/aufg1 | Bin 0 -> 190158 bytes Bachelor/Prog2/Prakt4/aufg1/Debug/main.d | 10 ++ Bachelor/Prog2/Prakt4/aufg1/Debug/makefile | 30 +++++ Bachelor/Prog2/Prakt4/aufg1/Debug/objects.mk | 13 ++ Bachelor/Prog2/Prakt4/aufg1/Debug/sources.mk | 16 +++ Bachelor/Prog2/Prakt4/aufg1/Debug/subdir.mk | 44 +++++++ Bachelor/Prog2/Prakt4/aufg1/Tree.h | 130 ++++++++++++++++++++ Bachelor/Prog2/Prakt4/aufg1/Treenode.h | 24 ++++ Bachelor/Prog2/Prakt4/aufg1/main.cpp | 47 ++++++++ Bachelor/Prog2/Prakt4/aufg1/max.txt | 67 +++++++++++ Bachelor/Prog2/Prakt4/index.htm | 170 +++++++++++++++++++++++++++ 15 files changed, 680 insertions(+) create mode 100644 Bachelor/Prog2/Prakt4/Max.txt create mode 100644 Bachelor/Prog2/Prakt4/aufg1/.cdtbuild create mode 100644 Bachelor/Prog2/Prakt4/aufg1/.cdtproject create mode 100644 Bachelor/Prog2/Prakt4/aufg1/.project create mode 100644 Bachelor/Prog2/Prakt4/aufg1/Debug/aufg1 create mode 100644 Bachelor/Prog2/Prakt4/aufg1/Debug/main.d create mode 100644 Bachelor/Prog2/Prakt4/aufg1/Debug/makefile create mode 100644 Bachelor/Prog2/Prakt4/aufg1/Debug/objects.mk create mode 100644 Bachelor/Prog2/Prakt4/aufg1/Debug/sources.mk create mode 100644 Bachelor/Prog2/Prakt4/aufg1/Debug/subdir.mk create mode 100644 Bachelor/Prog2/Prakt4/aufg1/Tree.h create mode 100644 Bachelor/Prog2/Prakt4/aufg1/Treenode.h create mode 100644 Bachelor/Prog2/Prakt4/aufg1/main.cpp create mode 100644 Bachelor/Prog2/Prakt4/aufg1/max.txt create mode 100644 Bachelor/Prog2/Prakt4/index.htm (limited to 'Bachelor/Prog2/Prakt4') diff --git a/Bachelor/Prog2/Prakt4/Max.txt b/Bachelor/Prog2/Prakt4/Max.txt new file mode 100644 index 0000000..9b1a536 --- /dev/null +++ b/Bachelor/Prog2/Prakt4/Max.txt @@ -0,0 +1,67 @@ +Maonche held im Stall sisch Hinggel, +fittert se mit Waas un Dinggel +un mit Kleie - dodewäije, +dass se schaeine Aaije laeije. +Sundaogs hot me daonn im Dippche, +alsemol e Hinggelsippche, +un die Färren, zaart un foi, +stobbt me in die Pilwe noi, +daonn im Winde leit me haolt +liewe waarm im Bett wie kaolt +Sou waar sellemols des aa +bei dem Bolde soine Fraa: +Hinggel hatt se Sticke drei +un en Gickel noch debei. +Säigt de Max zum Moritz kaolt: +"Kumm, mer äijen jetz die Aolt!" - +-Hordisch nemme se e Broud, +schneires mirrem Messe noud +in vier Sticke, gaar nit grouß, +wie en klaone Finge blouß. + +Jede Mumbel werd vun unne +iwwes Kreiz daonn feschdgebunne, +un die läije se genaa +in de Houf vun sellre Fraa. - +Wie de Giggel guckt do druff, +sperrt e glei de Schnawwel uff, +kreeht un kreischt gickerigie, +un die Hinggel renne hie. + +Jede schlickt soin Brogge nunne- +äwwe daon, das is kao Wunne, +henggt des ao aom aonnen drou +un fengt glei ze ziehe ou. + +Riwwe, niwwe, hie un her +renne se die Kreiz un Quer, +gacken, fladden in die Häih - +äwwe lous kimmt kaone mäih! + +Aome laonge derre Ascht +hengge se, verstrumbt schun fascht; +mirrem Hals sou laong wie Mosse +misse se eer Läwe losse. +E letscht Aig noch - des is alles, +un daonn häwwe se de Dalles! + +De aold Bolden in de Stobb +häijet waos un häibt de Kobb. +Un schun sterzt se aus de Kaomme - +ach, waos is des fer en Jaomme! + + +"Ich arrm Witfraa bin geschlaoe - +issch kaonn´s jao kaom Mensche saoe! +Drowwe uffm Ebbelboam +henggt moin alleschäinschte Draom!" +Gaons vesteert un halwe kraonk +helt se´s Messe aus em Schaonk +schneid die Hinggel aob vum Ascht +groint sisch aus die Aache fascht, +dabbt ins Haus im diefschte Schmerz, +drickt des Veehzeig aon eer Herz. +Is de erschte Straasch vebei, +kimmt de zwatte siche glei. + +Quelle: Elisabeth Kunz: De Ourewälle Max un Moritz Odenwald-Verlag 2. Auflage 1996 \ No newline at end of file diff --git a/Bachelor/Prog2/Prakt4/aufg1/.cdtbuild b/Bachelor/Prog2/Prakt4/aufg1/.cdtbuild new file mode 100644 index 0000000..8ff663c --- /dev/null +++ b/Bachelor/Prog2/Prakt4/aufg1/.cdtbuild @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Bachelor/Prog2/Prakt4/aufg1/.cdtproject b/Bachelor/Prog2/Prakt4/aufg1/.cdtproject new file mode 100644 index 0000000..e36be9f --- /dev/null +++ b/Bachelor/Prog2/Prakt4/aufg1/.cdtproject @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/Bachelor/Prog2/Prakt4/aufg1/.project b/Bachelor/Prog2/Prakt4/aufg1/.project new file mode 100644 index 0000000..37c964a --- /dev/null +++ b/Bachelor/Prog2/Prakt4/aufg1/.project @@ -0,0 +1,19 @@ + + + aufg1 + + + + + + org.eclipse.cdt.managedbuilder.core.genmakebuilder + + + + + + org.eclipse.cdt.core.cnature + org.eclipse.cdt.managedbuilder.core.managedBuildNature + org.eclipse.cdt.core.ccnature + + diff --git a/Bachelor/Prog2/Prakt4/aufg1/Debug/aufg1 b/Bachelor/Prog2/Prakt4/aufg1/Debug/aufg1 new file mode 100644 index 0000000..2f2827f Binary files /dev/null and b/Bachelor/Prog2/Prakt4/aufg1/Debug/aufg1 differ diff --git a/Bachelor/Prog2/Prakt4/aufg1/Debug/main.d b/Bachelor/Prog2/Prakt4/aufg1/Debug/main.d new file mode 100644 index 0000000..820922e --- /dev/null +++ b/Bachelor/Prog2/Prakt4/aufg1/Debug/main.d @@ -0,0 +1,10 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +main.d ./main.o: ../main.cpp ../Tree.h ../Treenode.h + +../Tree.h: + +../Treenode.h: + diff --git a/Bachelor/Prog2/Prakt4/aufg1/Debug/makefile b/Bachelor/Prog2/Prakt4/aufg1/Debug/makefile new file mode 100644 index 0000000..0733bbf --- /dev/null +++ b/Bachelor/Prog2/Prakt4/aufg1/Debug/makefile @@ -0,0 +1,30 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +ROOT := .. + +-include $(ROOT)/makefile.init + +RM := rm -rf + +# All of the sources participating in the build are defined here +-include sources.mk +-include $(SUBDIRS:%=%/subdir.mk) +-include objects.mk +-include $(DEPS) +-include $(ROOT)/makefile.defs + +all: aufg1 + +aufg1: $(OBJS) + @echo 'Building target: $@' + g++ -o $@ $(OBJS) $(USER_OBJS) $(LIBS) + @echo 'Finished building: $@' + +clean: + -$(RM) $(OBJS) $(DEPS) aufg1 + +.PHONY: all clean dependents + +-include $(ROOT)/makefile.targets diff --git a/Bachelor/Prog2/Prakt4/aufg1/Debug/objects.mk b/Bachelor/Prog2/Prakt4/aufg1/Debug/objects.mk new file mode 100644 index 0000000..c83c443 --- /dev/null +++ b/Bachelor/Prog2/Prakt4/aufg1/Debug/objects.mk @@ -0,0 +1,13 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +LIBS := +USER_OBJS := + + +OBJS := \ + $(C_SRCS:$(ROOT)/%.c=%.o) $(C_UPPER_SRCS:$(ROOT)/%.C=%.o) $(CC_SRCS:$(ROOT)/%.cc=%.o) $(CXX_SRCS:$(ROOT)/%.cxx=%.o) $(CPP_SRCS:$(ROOT)/%.cpp=%.o) $(S_SRCS:$(ROOT)/%.s=%.o) $(S_UPPER_SRCS:$(ROOT)/%.S=%.o) + +DEPS := \ + $(C_SRCS:$(ROOT)/%.c=%.d) $(C_UPPER_SRCS:$(ROOT)/%.C=%.d) $(CC_SRCS:$(ROOT)/%.cc=%.d) $(CXX_SRCS:$(ROOT)/%.cxx=%.d) $(CPP_SRCS:$(ROOT)/%.cpp=%.d) $(S_SRCS:$(ROOT)/%.s=%.d) $(S_UPPER_SRCS:$(ROOT)/%.S=%.d) \ No newline at end of file diff --git a/Bachelor/Prog2/Prakt4/aufg1/Debug/sources.mk b/Bachelor/Prog2/Prakt4/aufg1/Debug/sources.mk new file mode 100644 index 0000000..6c40c81 --- /dev/null +++ b/Bachelor/Prog2/Prakt4/aufg1/Debug/sources.mk @@ -0,0 +1,16 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +C_SRCS := +C_UPPER_SRCS := +CC_SRCS := +CXX_SRCS := +CPP_SRCS := +S_SRCS := +S_UPPER_SRCS := + +# Every subdirectory with source files must be described here +SUBDIRS := \ +. \ + diff --git a/Bachelor/Prog2/Prakt4/aufg1/Debug/subdir.mk b/Bachelor/Prog2/Prakt4/aufg1/Debug/subdir.mk new file mode 100644 index 0000000..2f01c61 --- /dev/null +++ b/Bachelor/Prog2/Prakt4/aufg1/Debug/subdir.mk @@ -0,0 +1,44 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +S_UPPER_SRCS += \ +${addprefix $(ROOT)/, \ +} + +CPP_SRCS += \ +${addprefix $(ROOT)/, \ +main.cpp \ +} + +CC_SRCS += \ +${addprefix $(ROOT)/, \ +} + +C_SRCS += \ +${addprefix $(ROOT)/, \ +} + +C_UPPER_SRCS += \ +${addprefix $(ROOT)/, \ +} + +CXX_SRCS += \ +${addprefix $(ROOT)/, \ +} + +S_SRCS += \ +${addprefix $(ROOT)/, \ +} + +# Each subdirectory must supply rules for building sources it contributes +%.o: $(ROOT)/%.cpp + @echo 'Building file: $<' + @echo g++ -O0 -g3 -Wall -c -fmessage-length=0 -o$@ $< + @g++ -O0 -g3 -Wall -c -fmessage-length=0 -o$@ $< && \ + echo -n $(@:%.o=%.d) $(dir $@) > $(@:%.o=%.d) && \ + g++ -MM -MG -P -w -O0 -g3 -Wall -c -fmessage-length=0 $< >> $(@:%.o=%.d) + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Bachelor/Prog2/Prakt4/aufg1/Tree.h b/Bachelor/Prog2/Prakt4/aufg1/Tree.h new file mode 100644 index 0000000..bcb154f --- /dev/null +++ b/Bachelor/Prog2/Prakt4/aufg1/Tree.h @@ -0,0 +1,130 @@ +// Fig. 15.16: tree.h +// Definition of template class Tree + +#ifndef TREE_H +#define TREE_H + +#include +using std::cout; +using std::endl; +using std::ostream; +#include + +#include + +#include +using std::ofstream; +using std::ifstream; +using std::ios; + +#include "Treenode.h" + +template< class NODETYPE > +class Tree { +public: + Tree(); + void insertNode( const NODETYPE & ); + void preOrderTraversal() const; + void inOrderTraversal() const; + void postOrderTraversal() const; + int gettreeElementCount(); +private: + TreeNode< NODETYPE > *rootPtr; + int treeElementCount; + + // utility functions + void insertNodeHelper( + TreeNode< NODETYPE > **, const NODETYPE & ); + void preOrderHelper( TreeNode< NODETYPE > * ) const; + void inOrderHelper( TreeNode< NODETYPE > * ) const; + void postOrderHelper( TreeNode< NODETYPE > * ) const; +}; + +template< class NODETYPE > +Tree< NODETYPE >::Tree() { rootPtr = 0; treeElementCount=0; } + +template< class NODETYPE > +void Tree< NODETYPE >::insertNode( const NODETYPE &value ) + { insertNodeHelper( &rootPtr, value ); } + +// This function receives a pointer to a pointer so the +// pointer can be modified. +template< class NODETYPE > +void Tree< NODETYPE >::insertNodeHelper( + TreeNode< NODETYPE > **ptr, const NODETYPE &value ) +{ + if ( *ptr == 0 ) { // tree is empty + *ptr = new TreeNode< NODETYPE >( value ); + (*ptr)->frequency++; + ++treeElementCount; + assert( *ptr != 0 ); + } + else // tree is not empty + if ( value < ( *ptr )->data ) + insertNodeHelper( &( ( *ptr )->leftPtr ), value ); + else + if ( value > ( *ptr )->data ) + insertNodeHelper( &( ( *ptr )->rightPtr ), value ); + else + (*ptr)->frequency++; +} + +template< class NODETYPE > +void Tree< NODETYPE >::preOrderTraversal() const + { preOrderHelper( rootPtr ); } + +template< class NODETYPE > +void Tree< NODETYPE >::preOrderHelper( + TreeNode< NODETYPE > *ptr ) const +{ + if ( ptr != 0 ) { + cout << ptr->data << ' '; + preOrderHelper( ptr->leftPtr ); + preOrderHelper( ptr->rightPtr ); + } +} + +template< class NODETYPE > +void Tree< NODETYPE >::inOrderTraversal() const + { inOrderHelper( rootPtr ); } + +template< class NODETYPE > +void Tree< NODETYPE >::inOrderHelper( + TreeNode< NODETYPE > *ptr ) const +{ + ofstream outFile("output.txt",ios::app); + if( !outFile ) { + cerr << "Output-Datei konnte nicht geoeffnet werden." << endl; + exit( 1 ); + } + if ( ptr != 0 ) { + inOrderHelper( ptr->leftPtr ); + outFile << std::setw(30) << std::left << std::setfill('.') << ptr->data + << ptr->frequency << endl; + inOrderHelper( ptr->rightPtr ); + } + outFile.close(); +} + +template< class NODETYPE > +void Tree< NODETYPE >::postOrderTraversal() const + { postOrderHelper( rootPtr ); } + +template< class NODETYPE > +void Tree< NODETYPE >::postOrderHelper( + TreeNode< NODETYPE > *ptr ) const +{ + if ( ptr != 0 ) { + postOrderHelper( ptr->leftPtr ); + postOrderHelper( ptr->rightPtr ); + cout << ptr->data << ' '; + } +} + +template +int Tree::gettreeElementCount() +{ + return treeElementCount; +} + +#endif diff --git a/Bachelor/Prog2/Prakt4/aufg1/Treenode.h b/Bachelor/Prog2/Prakt4/aufg1/Treenode.h new file mode 100644 index 0000000..027ad0e --- /dev/null +++ b/Bachelor/Prog2/Prakt4/aufg1/Treenode.h @@ -0,0 +1,24 @@ +// Fig. 15.16: treenode.h +// Definition of class TreeNode + +#ifndef TREENODE_H +#define TREENODE_H + +template< class NODETYPE > class Tree; // forward declaration + +template< class NODETYPE > +class TreeNode { + friend class Tree< NODETYPE >; +public: + TreeNode( const NODETYPE &d ) + : leftPtr( 0 ), data( d ), rightPtr( 0 ) { } + NODETYPE getData() const { return data; } + int getFreq() const { return frequency; } +private: + TreeNode< NODETYPE > *leftPtr; // pointer to left subtree + NODETYPE data; + int frequency; + TreeNode< NODETYPE > *rightPtr; // pointer to right subtree +}; + +#endif diff --git a/Bachelor/Prog2/Prakt4/aufg1/main.cpp b/Bachelor/Prog2/Prakt4/aufg1/main.cpp new file mode 100644 index 0000000..79581e3 --- /dev/null +++ b/Bachelor/Prog2/Prakt4/aufg1/main.cpp @@ -0,0 +1,47 @@ +// Tree with string objects +// Author: Sven Eisenhauer +// Date: 05.06.05 + +#include +using std::cout; +using std::cerr; +using std::cin; +using std::endl; + +#include +using std::ofstream; +using std::ifstream; +using std::ios; + +#include +using std::string; + +#include +#include + +#include "Tree.h" + +int main() +{ + int wordsInFile=0; + Tree< string > wordTree; + string word; + + ifstream inFile( "max.txt", ios::in ); + + if( !inFile ) { + cerr << "Input-Datei konnte nicht geoeffnet werden." << endl; + exit( 1 ); + } + + while( inFile >> word) { + wordTree.insertNode( *( new string( word ) ) ); + wordsInFile++; + } + + wordTree.inOrderTraversal(); + cout << "Words in input file: "<< wordsInFile << endl; + cout << "Different words: " << wordTree.gettreeElementCount() << endl; + + return 0; +} diff --git a/Bachelor/Prog2/Prakt4/aufg1/max.txt b/Bachelor/Prog2/Prakt4/aufg1/max.txt new file mode 100644 index 0000000..9b1a536 --- /dev/null +++ b/Bachelor/Prog2/Prakt4/aufg1/max.txt @@ -0,0 +1,67 @@ +Maonche held im Stall sisch Hinggel, +fittert se mit Waas un Dinggel +un mit Kleie - dodewäije, +dass se schaeine Aaije laeije. +Sundaogs hot me daonn im Dippche, +alsemol e Hinggelsippche, +un die Färren, zaart un foi, +stobbt me in die Pilwe noi, +daonn im Winde leit me haolt +liewe waarm im Bett wie kaolt +Sou waar sellemols des aa +bei dem Bolde soine Fraa: +Hinggel hatt se Sticke drei +un en Gickel noch debei. +Säigt de Max zum Moritz kaolt: +"Kumm, mer äijen jetz die Aolt!" - +-Hordisch nemme se e Broud, +schneires mirrem Messe noud +in vier Sticke, gaar nit grouß, +wie en klaone Finge blouß. + +Jede Mumbel werd vun unne +iwwes Kreiz daonn feschdgebunne, +un die läije se genaa +in de Houf vun sellre Fraa. - +Wie de Giggel guckt do druff, +sperrt e glei de Schnawwel uff, +kreeht un kreischt gickerigie, +un die Hinggel renne hie. + +Jede schlickt soin Brogge nunne- +äwwe daon, das is kao Wunne, +henggt des ao aom aonnen drou +un fengt glei ze ziehe ou. + +Riwwe, niwwe, hie un her +renne se die Kreiz un Quer, +gacken, fladden in die Häih - +äwwe lous kimmt kaone mäih! + +Aome laonge derre Ascht +hengge se, verstrumbt schun fascht; +mirrem Hals sou laong wie Mosse +misse se eer Läwe losse. +E letscht Aig noch - des is alles, +un daonn häwwe se de Dalles! + +De aold Bolden in de Stobb +häijet waos un häibt de Kobb. +Un schun sterzt se aus de Kaomme - +ach, waos is des fer en Jaomme! + + +"Ich arrm Witfraa bin geschlaoe - +issch kaonn´s jao kaom Mensche saoe! +Drowwe uffm Ebbelboam +henggt moin alleschäinschte Draom!" +Gaons vesteert un halwe kraonk +helt se´s Messe aus em Schaonk +schneid die Hinggel aob vum Ascht +groint sisch aus die Aache fascht, +dabbt ins Haus im diefschte Schmerz, +drickt des Veehzeig aon eer Herz. +Is de erschte Straasch vebei, +kimmt de zwatte siche glei. + +Quelle: Elisabeth Kunz: De Ourewälle Max un Moritz Odenwald-Verlag 2. Auflage 1996 \ No newline at end of file diff --git a/Bachelor/Prog2/Prakt4/index.htm b/Bachelor/Prog2/Prakt4/index.htm new file mode 100644 index 0000000..b94d773 --- /dev/null +++ b/Bachelor/Prog2/Prakt4/index.htm @@ -0,0 +1,170 @@ + + + + +Praktikum 3 + + + + + + + + + + + + + +
 
FH Darmstadt  +
FB Informatik  +
Prof.Dr. H.P.Weber
+
Programmieren II  +
Praktikum
+
+
4
+
+ +
+ + + + +
Ziel: +Sie sollen die Datenstruktur Baum in Form einer Template-Klasse anwenden können. +
+ +
+ + + + + + + +
+

+1    Wörterliste

+
+Zu einer gegebenen, beliebigen Textdatei soll eine Liste der darin +auftretenden Wörter erstellt werden. Alle Wörter werden dabei +alphabetisch sortiert in eine zweite Textdatei ausgegeben. Jedes +Wort soll nur einmal in der Liste wiedergegeben werden; zusätzlich +soll angegeben werden, wie oft es in der Ursprungsdatei vorkommt. Die Einträge +in der Ausgabedatei sollen formatiert sein (s. Beispiel). Auf der Konsole soll +außerdem die Gesamtzahl der Wörter und die Anzahl der unterschiedlichen in der Eingabedatei +auftretenden Wörter ausgegeben werden. +
Ein Beispiel : +
+ + + + + + + + + + + +
Eingabedatei:Ausgabedatei:
Zu einer gegebenen, beliebigen Textdatei soll eine Liste der darin +auftretenden Wörter erstellt werden. Alle Wörter werden dabei +alphabetisch sortiert in eine zweite Textdatei ausgegeben.Alle..........................1 +Liste.........................1 +Textdatei.....................2 +Wörter........................2 +Zu............................1 +alphabetisch..................1 +auftretenden..................1 +ausgegeben....................1 +beliebigen....................1 +dabei.........................1 +darin.........................1 +der...........................1 +eine..........................2 +einer.........................1 +erstellt......................1 +gegebenen,....................1 +in............................1 +soll..........................1 +sortiert......................1 +werden........................1 +werden........................1 +zweite........................1
+ +
+ + + + +

Technische Hinweise: +

    +
  • + Verwenden Sie die Template-Klasse Tree aus der Vorlesung, indem Sie im +Anwendungsprogramm mit einem Tree<string> - Objekt arbeiten. +
  • +
  • +Führen Sie ein Attribut frequency in die Template-Klasse + TreeNode ein und erweitern Sie die +Methode insertNodeHelper an der +passenden Stelle, um mehrfach vorkommende Wörter durch Inkrementierung von frequency +zu zählen. +
  • +
  • +Modifizieren Sie die +Methode inOrderHelper so, dass +die Wörter mit ihren Häufigkeiten nicht auf die Konsole, sondern richtig +formatiert in die oben erwähnte Ausgabedatei geschrieben werden. +
  • +
  • +Eine Sortierung nach dem eingebauten Code ASCII reicht aus (Sortierung nach +DUDEN ist nicht verlangt). Weiter ist nicht verlangt, echte Wörter +zu erkennen ("gegebenen," [incl. Komma] gilt in dem Beispiel oben +auch als ein Wort). +
  • +
  • +Verwenden Sie für die Demonstration Ihres Programms +während des Praktikums diese Datei. +
  • +
+ + + + +
+ + + + +
+

+2    Verbesserte Wörterliste (fakultativ)

+ +

Verbessern Sie Ihr Programm aus Aufgabe 1, indem Sie echte Wörter erkennen +(also Satzzeichen und Ziffern entfernen) und eine wirkliche lexikalische +Sortierung vornehmen (also groß und klein geschriebene Wörter nicht separat +sortieren sowie die Umlaute richtig einsortieren). Realisieren Sie zur Lösung dieser Aufgaben +eine Klasse GermanWord, +die es Ihnen erlaubt, die Template-Klassen aus Aufgabe 1 unverändert zu +übernehmen, indem Sie im Anwendungsprogramm jetzt mit einem Tree<GermanWord> - Objekt arbeiten. +Ihre GermanWord-Klasse sollte folgende Methoden enthalten: +

    +
  • +Der Konstruktor übernimmt einen string und entfernt alle Satzzeichen und +Ziffern, so dass nur noch echte Wörter übrig bleiben. Verwenden Sie hierzu +Methoden +der string-Klasse +wie find_first_of und replace.
  • +Die überladenen Operatoren operator< und operator> sorgen dafür, dass groß und +klein geschriebene Wörter nicht wie bei der einfachen ASCII-Code-Sortierung separat +sortiert werden und dass die Umlaute richtig +einsortiert werden (also z.B. 'ä' unter 'a').
  • +Eine Methode isEmpty sollte vorhanden sein, damit im Anwendungsprogramm nur +nicht-leere GermanWord-Objekte (also keine, die nur einen +leeren string enthalten) in den Tree eingefügt werden können.
  • +Ein cast-Operator operator string  soll vorhanden sein, damit der Tree aus +Aufgabe 1 unverändert übernommen werden kann (und GermanWord-Objekte wenn nötig +implizit in strings gewandelt werden).
+ + + \ No newline at end of file -- cgit v1.2.3