Geschafft!

Hinweis

Fehler

Session expiration Your session is going to expireClick here to extend

Budget:

Kleines Projekt <800

Geposted am

10.07.12 00:03

Kunde

Sve***

Die Angebotsphase ist beendet

Schreiben Sie ein ähnliches Projekt aus und erhalten Sie Angebote von Freelancern. Unverbindlich. Kostenlos. Schnell.

Jetzt ähnliches Projekt einstellen

Beschreibung:

Hallo, wir suchen einen Programmierer (c++), der folgende Aufgabe der Uni Duisburg  lost.

Bei Interesse folgen weitere Informationen. Universit at Duisburg-Essen SS 2012  Ubungsaufgaben Programmierkurs C/C++

8. Blatt Abgabe bis 13.7. 23:30 Uhruber das Moodle Aufgabe 14: Die Klasse SparseMatrix aus Aufgabe 13 soll nun noch bearbeitet und erweitert werden:

1. Die Defnition der Klasse samt Deklaration ihrer Member-Funktionen soll von den Defnitionen der Member-Funktionen (sofern diese nicht inline sind) getrennt werden - die Klassendefnition in SparseMatrix.h, die Implemetierung der Member-Funktionen in SparseMatrix.cpp. Die Funktion main kommt in ein drittes File. Auf diese Weise erh alt ein Programm, welches die Klasse benutzen will, in jedem Quellmodul durch #include "SparseMatrix.h" Die Klassendefnition, die Implemetierung der Klassenmember kann jedoch unabh angig compiliert werden.

2. Dann sollten alle Member-Funktionen und Operatoren, die nichts an dem Objekt ver andern, const gemacht werden, damit man sie auch mit einer const SparseMatrix aufrufen kann.

3. Neben dem bereits vorhandenen Operator SparseMatrix operator*( const SparseMatrix &rhs ) const; soll auch die Moglichkeit geschavten werden, eine Matrix mit einem double-Skalar zu mutliplizieren, also SparseMatrix operator*( const double &rhs ) const;

4. Die Zuweisung ( d.h. operator=) soll ebenfallsuberladen werden ( sie funktioniert nat urlich nur f ur den Fall, dass die Dimensionen von Quelle und Zielubereinstimmen). F ur Hinweise dazu siehe z.B. http://courses.cms.caltech.edu/cs11/material/cpp/donnie/cpp-ops.html

5. Ausserdem soll nun noch in SparseMatrix.h und SparseMatrix.cpp eine von SparseMatrix abgeleitete Klasse SparseVector hinzugef ugt werden. Die privateMember von SparseMatrix m ussen daf ur als protected erkl art werden, damit sie in der abgeleiteten Klasse zugreifbar sind. Ein SparseVector soll entsprechend denublichen Konventionen eine Spalte sein. Damit erbt der SparseVector vieles, was nicht neu implemetiert werden muss, sondern sofort funktioniert. Die folgendenMember-Funktionen sind f ur SparseVector zu implementieren bzw. zuuberladen: { Konstruktor, getCell und setCell (alle drei erhalten nur einen Parameter, das ist die L ange bzw. der Zeilenindex). { Die Multiplikation zweier Objekte vom Typ SparseVector (gleicher L ange) soll das Skalarprodukt liefern, also x*y = hx; yi = xT y. Deshalb ist operator* zuuberladen. { Auemerdem ist die Multiplikation mit einem double-Skalar zuuberladen (zumindest bei mir funktioniert der geerbte Operator nicht so, wie er sollte). Die Implementierung all dieserMember-Funktionen kann auf dieMember von SparseMatrix zur uckgreifen, da ein abgeleitetes Objekt ja auch eines der Basisklassse ist. F ur manche Operationen muss man es allerdings erst in ein solches verwandeln.

6. Auemerdem noch: siehe Komentare im mitgelieferten Testrahmen Test SparseMatrix.cpp Bitte verwenden Sie als Grundlage das im zip mit enthaltene File old main.cpp. Dies ist eine L osung mit Speicherung in einer map, die viele von Ihnen abgegeben haben, nur leicht korrigiert. Dort funktionieren alle bisher implementierten Member ohne Probleme. Ihre beiden daraus erstellten Files SparseMatrix.h und SparseMatrix.cpp sollen dann nach den beschriebenen Erg anzungen mit der main-Funktion im (zum Teil zu korrigierenden - siehe die Kommentare darin!) Test SparseMatrix.cpp in einem Projekt funktionieren.

 

Mit freundlichen Grun Dr. K.