next up previous
Nächste Seite: Über dieses Dokument ...

8. Übung des Programmierpraktikums (MATH)


Abgabetermin: 30. Juni 2009, 23:59 Uhr

Die Übungen sind grundsätzlich allein zu machen. Gruppenarbeit ist nicht erlaubt.
Abzugeben sind jeweils die sinnvoll dokumentierten Programmfiles (Files für Bsp. 5: bsp_5.cpp, bsp_5_fkt.cpp, bsp_5_fkt.hpp ) indem Sie diese in Ihr Verzeichnis im globalen Abgabeordner kopieren.

  1. Ersetzen Sie die statischen C-Felder in Aufg. 19 (6. Übung) durch die Vektorklasse vector<double> welche eine dynamische Länge des Vektors während der Laufzeit erlaubt, siehe dazu §2.3.4 des Skriptes.
    Schreiben Sie Ihre Funktionen aus Aufg. 19 für obige Vektorklasse um und speichern Sie diese separat in Header- und Quelltextfile (3 Files sind abzugeben!). Benutzen Sie dabei die Methode size der Vektorklasse.
    Erschließen Sie sich die Funktionsweise der Methoden push_back und pop_back der Vektorklasse. Probieren Sie diese Methoden aus.

    Eingabedaten (n): (4), (20), (31553)
  2. Schreiben Sie eine Klasse DATUM, welche Tag, Monat und Jahr speichert. Implementieren Sie (Header- und Sourcefile in bsp_30_fkt.hpp und bsp_30_fkt.cpp) alles so, daß das folgende Programm funktioniert.


    \begin{listing}{1}
...



    Hinweis: Implementieren Sie entweder zuerst den «-Operator für Ihre Klasse DATUM oder kommentieren Sie die entsprechenden Zeilen im Programm anfangs aus. Ansonsten erscheinen lange, kryptische Fehlermeldungen beim Kompilieren.
  3. Implementieren Sie eine Klasse für die Koeffizienten eines Polynoms vom Grad n. Diese Klasse sollte neben Standard-, Kopierkonstruktor und Destruktor einen Parameterkonstruktor mit einem Filenamen als Parameter enthalten. Letzterer liest die Daten von einem File ein, siehe (§ 9.2 des Skriptes). Weiters sollten Zuweisungs- und Ausgabeoperator implementiert werden. Die Auswertung des Polynoms

    pn(x) = $\displaystyle \sum_{{k=0}}^{n}$ak . xk

    in einem Punkt x ist als Methode der Klasse zu realisieren. Werten Sie das Polynom in einer zweiten Methode über das HORNER-Schema aus.

    Speichern Sie Klassendeklaration und -implementierung in den Files bsp_31_fkt.hpp und bsp_31_fkt.cpp.

    Testdaten (Filename, x): (data_31_a.txt, 3.78), (data_31_b.txt, -1.0087), (data_31_c.txt, -0.945),
    Die ASCII-(Text-)Files enthalten n und ak, k = 0,..., n.

  4. Erweitern Sie Ihre Klasse aus Aufg. 31 so, dass Schreiben Sie ein kleines Testprogramm dafür.
  5. Implementieren Sie eine Klasse Sparschwein, welche folgende Datenelemente besitzt: Die Klasse soll die folgenden Methoden besitzen: Benutzen Sie Header- und Sourcefile zur Implementierung der Klasse. Das Hauptprogramm (ein weiteres Sourcefile) soll Münzen solange in das Sparschwein einwerfen, bis dieses voll ist und es dann knacken. Zeigen Sie den angesammelten Betrag an. Werfen Sie danach noch 37 Cent in das Sparschwein und knacken Sie es erneut (Wieviel Geld ist drin?).
  6. Nutzen Sie für diese Aufgabe die Klassen string und vector aus der STL. Schauen Sie sich dazu §2.3.1 und §2.3.4 des Vorlesungsskriptes (bzw. string und vector) an. Zu vector können Sie sich auch ein Bsp. in §3.3.1 des Download-Buches von Breymann und zu string die Vorlesung von Schröder anschauen.

    Deklarieren Sie eine Klasse zur Darstellung eines Handys, das durch einen Gerätenamen, den Namen des Besitzers, die Telefonnummer und die monatliche Grundgebühr charakterisiert ist. Diese Klasse soll außer den üblichen Konstruktoren (falls diese nötig sind) Zugriffsmethoden auf die Member enthalten und die gesamten Daten zum Handy ausgeben können.

    Nutzen Sie diese Handy-Klasse, um sich ein Adressbuch Ihrer Freunde anzulegen (Sie sollten mehr als 5 haben). Wie wäre es mit einer Klasse Adressbuch?
    Lesen Sie die unsortierten Datensätze von einem File ein und nutzen Sie evtl. die Funktion getline zum Einlesen ganzer Zeilen inklusive der Leerzeichen.
    Geben Sie Ihr sortiertes Adressbuch aus (Tip: in den oben gegebenen www-Referenzen nach einem Algorithmus sort suchen).

    Speichern Sie Klassendeklaration und -implementierung in den Files bsp_34_fkt.hpp und bsp_34_fkt.cpp. Geben Sie auch Ihr(e) Datenfile(s) bsp_34_data.txt ab.

generelle Hinweise:
Die Befehle break, continue, goto sind nicht erlaubt.



Abgabe der Lösungen:
Die Abgabe der Lösungen (*.cpp-Files, *.hpp, ..., keine exe-Files) erfolgt ausschließlich durch das Kopieren dieser Files in Ihr (beim erstenmal anzulegendes) Verzeichnis Nachname_Vorname im globalen Abgabeordner y: \\pers.ad.uni-graz.at\fs\ou\621\stud_haase\Nachname_Vorname .
Hinweise hierzu sind unter der LV-Homepage zu finden.

Die Filenamen müssen dem Schema bsp_nummer, gefolgt von der Filextension, entsprechen. Z.B. ist in Beispiel 1 das File bsp_1.cpp abzugeben. Andere Filebezeichner zählen als nicht abgegebene Files.




next up previous
Nächste Seite: Über dieses Dokument ...
Gundolf Haase 2009-05-29