Aufgaben

(Aufgaben aus erstem Kurs für ca. 1.5 Tage, bitte nach Neigung auswählen)

  1. Vektor-Klasse
    Entwerfen Sie ausgehend von den Beispielen die My3Vector Klasse. Zunächst können Sie alle Teile (Deklaration, Implementierung der Methoden und Aufruf in main() ) in ein gemeinsames source file packen. Führen Sie einige zusätzliche `sinnvolle' Methoden ein, z.B. Länge eines Vektors, Winkel zwischen zwei Vektoren, Skalarprodukt, Vektorprodukt.

    Lösungsbeispiel: Alles zusammen T3VectorAllInclusive.cpp (html, source),

  2. Vektor-Klasse aufteilen
    Folgen Sie jetzt der C++ Konvention das Programm in drei verschiedene Files zu trennen: die Deklaration der My3Vector-Klasse kommt in eine Header-Datei (z.B. My3Vector.h), die Implementierung der Methoden geht in ein extra source file (z.B. My3Vector.cpp) und schliesslich die main() Funktion zum Testen in z.B. T3Vector.cpp

    Lösungsbeispiel: Header My3Vector.h (html, source), Implementation My3Vector.cpp (html, source), Testprogramm T3Vector.cpp (html, source)
    Kompilieren: g++ -o T3Vector T3Vector.cpp My3Vector.cpp

  3. Operator-Overloading
    Implementieren Sie die Addition zweier Vektoren mit dem + Operator und die Multiplikation mit double


    
     int main()
     {
       double x = 3.;
       My3Vector a(1.,1.,0.);
       My3Vector b(-1.,1.,0.);
       My3Vector c = a + b;
       My3Vector d = a * x; // von rechts
       My3Vector e = x * a; // von links
     }  
    
    

    Lösungsbeispiel: Header myvec.h, code myvec.cpp, Testprogramm tvec.cpp.

  4. Const correct Definiton der My3Vector Klasse
    Implementieren Sie sorgfältig die const Spezifikation für Argumente und Methoden in der My3Vector Klasse.

    Und zur Anschauung noch die ThreeVector Klasse aus der CLHEP Klassenbibliothek (Utility Classes for Particle Physics): Header ThreeVector.h, source code ThreeVector.cc, ThreeVector.icc

  5. Statistik
    Die Klasse StatCalc (html, source) implementiert einige grundlegende Statistikfunktionen, wie Mittelwert, Standardabweichung, ...
    Ein kurzes Testprogramm ist angehängt, das Zufallszahlen in ein StatCalc Objekt füllt und anschliesend die Statistik-größen ausgibt.

    (a) Probieren Sie das Programm aus und Erweitern dann die StatCalc Klasse um Methoden zur Berechnung und Ausgabe von Minimum und Maximum.
    (c) In semester.dat finden Sie die Semesterzahl bis zum Physikdiplom für zufällig ausgewählte Studenten. Die ersten 100 Einträge sind von Studenten der LMU, die restlichen 100 von Studenten der TUM. Lesen Sie die Daten ein und füllen LMU bzw TUM Zahlen jeweils in ein StatCalc Objekt. Sind die Mittelwerte im Rahmen der Schwankungen konsistent ?
    (d) Überlegen Sie wie man das Problem aus (c) (mehrere Statistiken parallel führen) in einer prozeduralen Sprache (Fortran, C) angehen könnte, d.h. ohne Klassen und Objekte, nur mit Arrays und Funktionen.

  6. BigInts, statisch
    Entwerfen Sie die Klasse BigInt zunächst statisch, so wie im Beispiel vorgegeben. Implementieren Sie den \bgroup\color{magenta}$«$\egroupoperator und wenn Sie Zeit/Lust haben auch noch Subtraktion, Multiplikation und Division.

  7. BigInts, dynamisch
    Modifizieren Sie die BigInt Klasse, so dass Speicher dynamisch zugewiesen wird. Jetzt müssen auch Copy-constructor, =operator und destructor implementiert sein.

    Lösungsbeispiel: Header BigInt.h, code BigInt.cpp, Testprogramm tBigInt.cpp.

  8. Mondlandung
    Ein Spieleklassiker ist die Mondlandung:

    Erstellen Sie eine C++ Klasse für Mondfähre, welche Datenelemente, welche Methoden werden benötigt?

    Lösungsbeispiel aus Buch Coding for Fun mit C++ mondlandung.cpp.


GDuckeck 2019-08-01