Hallo Leute,
ich muss bis Sonntag für die Uni ein eigentlich einfaches c++ Terminal Programm schreiben. Ich bin erst im zweiten Semester und kenne mich zwar mit der c-Syntax und Algorithmen aus, aber ich verzweifle grad an der ganzen OOP Sache :confused:
Die Aufgabe ist folgende:
- drei Dateien (tree.h, tree.cxx und main.cxx) erstellen.
- Es soll eine Baumstruktur erstellt werden mit einem Objekt namens "node"
- die Memberfunktionen sind :
die genaue Aufgabe ist
die tree.cxx:
also so wie ich das mitbekommen habe wird die Datei dann automatisch vom Visual Studio erstellt. Das ist aber gerade noch am downloaden, deswegen hab ich mich mal selbst dran probiert ^^
und die main.cxx:
Ich habe echt keine Ahnung wo ich anfangen soll und das Gefühl dass ich irgendwas grundlegendes falsch mache. Mir gehts jetzt eigentlich nur darum, die Nodes erstellen zu können und den Namen zu speichern, auszugeben und die Kindknotenanzahl anzuzeigen. Und natürlich die Knoten wieder löschen zu können.
Ich weis, das ist ziemlich viel stuff, aber wäre echt cool wenn sich jemand die Mühe machen würde und mal alles durchsehen würde :)
Ich will auch nich unbedingt den genauen Code wissen, nur rein logisch betrachtet, was ich machen muss und wie ich die Memberfunktionen richtig einsetze. Und vor allem wie ich das mit dem Vektor als Relation für die Knoten richtig hinbekomme.
ich muss bis Sonntag für die Uni ein eigentlich einfaches c++ Terminal Programm schreiben. Ich bin erst im zweiten Semester und kenne mich zwar mit der c-Syntax und Algorithmen aus, aber ich verzweifle grad an der ganzen OOP Sache :confused:
Die Aufgabe ist folgende:
- drei Dateien (tree.h, tree.cxx und main.cxx) erstellen.
- Es soll eine Baumstruktur erstellt werden mit einem Objekt namens "node"
- die Memberfunktionen sind :
- Konstruktor
- Destruktor
- get_name() const
- set_name(new_name)
- get_nr_children() const
- get_child(i) const
- add_child(node)
die genaue Aufgabe ist
meine tree.h:Quote:
1 Praxis
1.1 Bibliothek mit Baumdatenstruktur (5 Pt)1.1.1 Grundgerüst der Baumdatenstruktur (2 Pt)Erstellen Sie zwei neue Dateien tree.h und tree.cxx und implementieren Sie1.1.2 Programmstruktur (2 Pt)
eine Baumdatenstruktur wie folgt.
Die Knotenklasse node soll einen Namen vom Typ std::string speichern
können und folgende Methoden bereitstellen (Typen der Argumente und Rückgabewerte
sind bewusst weggelassen und müssen erschlossen werden)Nutzen Sie zum Speichern der Kindknotenzeiger die Template Klasse std::vector
- Konstruktor mit einem Argument vom Typ const std::string&, das den
Knotenname initialisiert- Destruktor zum Löschen aller Kindknoten mit dem delete-Operator. Deklarieren
Sie den Destruktor als virtuelle Methode.- get_name() const ... gibt den Namen des Knotens zurück
- set_name(new_name) ... setzt den Namen des Knotens auf einen neuen
Namen- get_nr_children() const ... gibt die Anzahl der Kindknoten an
- get_child(i) const ... gibt einen Zeiger auf den i-ten Kindknoten zurück
- add_child(node) ... fügt am Ende einen neuen Kindnoten hinzu
der Standard Template Library, die im Header <vector> deklariert ist.Erstellen Sie eine dritte Datei main.cxx. Binden Sie tree.h mit einem entsprechenden
#include-Befehl ein
- Implementieren Sie eine main-Funktion, die einen Baum mit einem Wurzelknoten
namens "root" und zwei Kindern namens "left child" und
"right child" erzeugt und danach den ganzen Baum mit dem delete-
Operator angewendet auf den Wurzelknoten wieder löscht.- Erstellen Sie zwei Visual Studio Projekte - ein Projekt namens tree, das
aus tree.cxx eine statische Bibliothek erzeugt und ein Projekt namens
tree_test, das aus main.cxx eine Anwendung erstellt. Setzen Sie in der
Solution das Projekt tree_test als abhängig vom Projekt tree.
Code:
#include <iostream> #include <string> #include <vector> Class node { private: string name; //name des Knotens int nr_children; vector<int> vec; public: node(void){const std::string& name;}; //constructor virtual ~node(void); //destructor //=======GET=========// //liest den Namen aus get_name(){ return name; }; //gibt die Nummer der Kindknoten aus get_nr_children(){ }; //gibt die Nummer get_child(i); // =======SET========// set_name(new_name){ name = new_name; }; add_child(node){}; };
also so wie ich das mitbekommen habe wird die Datei dann automatisch vom Visual Studio erstellt. Das ist aber gerade noch am downloaden, deswegen hab ich mich mal selbst dran probiert ^^
Code:
#include "tree.h" node::node(void){} node::virtual ~node(void){}
Code:
#include "tree.h" #include <iostream> int main(){ root = new node("root"); left_child = new node("left"); right_child = new node("right"); return 0; }
Ich weis, das ist ziemlich viel stuff, aber wäre echt cool wenn sich jemand die Mühe machen würde und mal alles durchsehen würde :)
Ich will auch nich unbedingt den genauen Code wissen, nur rein logisch betrachtet, was ich machen muss und wie ich die Memberfunktionen richtig einsetze. Und vor allem wie ich das mit dem Vektor als Relation für die Knoten richtig hinbekomme.