Programmierübungen C++

Vorbereitende Übungen

  1. Strukturen, Funktionen, Referenz-Parameter: Worte sortieren.
    Musterlösung: sortwords-ptr.cpp, sortwords-ref.cpp.
  2. Referenz-Returnwerte: Zahlen zählen.
    Musterlösung: count.cpp, count-sorted.cpp.
    Für Interessierte: Dasselbe gelöst mit Verwendung des STL-map-Templates: count-map.cpp.
  3. C++ I/O, Referenzen, new für Arrays, Default-Parameter: Rangliste sortieren.
    Musterlösung: rangliste.cpp.

Klassen, Vererbung

  1. Klassen und Vererbung: Geometrische Objekte
    Wir verwenden für die grafische Anzeige SDL (siehe auch hier),
    hier gibt es die Installationsanleitung
    und hier meine "Zwischenschicht" zur SDL: sdlinterf.c und sdlinterf.h.
    1. Teil 1: Erste Klassen und Objekte.
      Ausgangsbasis: point.cpp.
      Musterlösung: rect.cpp.
    2. Teil 2: File-Aufteilung, dynamisch angelegte Objekte.
      Musterlösung: color.h, rect.h, rect.cpp, main.cpp.
    3. Teil 3: Copy-Konstruktor usw..
      Musterlösung: color.h, rect.h, rect.cpp, main.cpp.
    4. Teil 4: Vererbung und clone: Ellipsen.
      Musterlösung: color.h, graobj.h, graobj.cpp, rect.h, rect.cpp, circ.h, circ.cpp, main.cpp.
    5. Teil 5: Objekte die Pointer enthalten: Zusammengesetzte geometrische Objekte.
      Musterlösung: color.h, graobj.h, graobj.cpp, rect.h, rect.cpp, circ.h, circ.cpp, comp.h, comp.cpp, main.cpp.
  2. Klassen und Vererbung: Inventarliste
    1. Teil 1: Abgeleitete und abstrakte Klassen, statische Member.
      Wem das main zu wenig spannend ist: Mein main.cpp.
      Musterlösung: inventar.h, inventar.cpp, zubeh.h, zubeh.cpp, comp.h, comp.cpp, main.cpp.
    2. Teil 2: Copy-Konstruktor und clone.
      Wem das main zu wenig spannend ist: Mein main.cpp.
      Musterlösung: inventar.h, inventar.cpp, zubeh.h, zubeh.cpp, comp.h, comp.cpp, main.cpp.
    3. Teil 3: Objekte, die Pointer enthalten.
      Wem das main zu wenig spannend ist: Mein main.cpp.
      Musterlösung: inventar.h, inventar.cpp, zubeh.h, zubeh.cpp, comp.h, comp.cpp, sammel.h (alternativ: sammel-mit-new.h), sammel.cpp, main.cpp.
  3. Vererbung, Klasse mit dyn. Daten: Array-Klasse mit Statistiken
    Programm zum Vervollständigen: array-abgel-main.cpp, Soll-Ausgabe: result.txt.
    Musterlösung: array-abgel.cpp.
  4. Vererbung: Klassen für Zahlenlose.
    Musterlösung: lose.cpp.

Operatoren

  1. Operatoren: Bruchrechnen.
    Ausgangsbasis für main: taschenr.c (einfacher Rechner mit double-Werten).
    Musterlösung: bruch.cpp.
  2. Operatoren: String-Klasse.
    Hauptprogramm zum Testen: strings-main.cpp
    Erwartete Ausgabe: strings-out.txt
    Musterlösung: strings.cpp.
    Erweiterung mit Index- und Typumwandlungsoperator:
    Hauptprogramm zum Testen: strings-main-stud.cpp
    Erwartete Ausgabe: strings-stud-out.txt
    Musterlösung: strings-stud.cpp.
  3. Objekte mit dyn. Arrays: Rechen-Operatoren auf Arrays
    Hauptprogramm zum Testen: array-main.cpp
    Erwartete Ausgabe: result.txt
    Musterlösung: array.cpp.
  4. Objekte mit dyn. Arrays: Klasse mit bel. vielen Zählern.
    Musterlösung: lotto.cpp.
  5. Objekte mit dyn. Arrays: Objekte für Messreihen, Mittelwert.
    Musterlösung: messw.cpp.
    Erweiterung auf Templates.
    Musterlösung: messw-templ.cpp.
  6. Objekte mit dyn. Arrays, optional Templates: Addition mit Gedächtnis.
    Musterlösung: adder.cpp, adder-tmpl.cpp.

Diverses

  1. Teil 1: Function Pointer: Array-Klasse mit apply
    Musterlösung: funptr.cpp.
    Teil 2: Abgeleitete Klassen: Erweiterung der Array-Klasse
    Musterlösung: funptr-minmax.cpp.
  2. Arrays von Pointern: Wege-Optimierung (Floyd-Warshall).
    Programm zur Angabe: matrix-angabe.cpp.
    Musterlösung: matrix.cpp.
  3. Zweidim. Arrays, Arrays von Pointern: Gleichungslösen nach Gauss.
    Musterlösung: gauss.cpp, gauss-dyn.cpp.

File I/O

  1. Files lesen & schreiben: File klein schreiben, File zentrieren.
    Musterlösung: filelower.cpp, center.cpp, center-multi.cpp.
  2. Files, Stringstreams: Einlesen von Dec/Hex/Oct-Zahlen.
    Musterlösung: hexoct.cpp.

GUI-Programmierung (wxWidgets)

Informationen zu wxWidgets: Meine Installationsanleitung für CodeBlocks (DHGE),
das Reference Manual und meine Webseite zu wxWidgets.

  1. GUI-Programmierung mit vordefinierten Elementen:
  2. GUI-Programmierung mit freier Gestaltung des Hauptfensters:

Exceptions

  1. Exceptions, Stringstreams: Datumsrechner mit Fehlerbehandlung
    Programm zum Umbauen: datum-diff-xcpt-angabe.cpp.
    Musterlösung: datum-diff-xcpt-2.cpp, datum-diff-xcpt-3.cpp, datum-diff-xcpt-4.cpp.
  2. Exceptions: Bruchrechner mit Fehlerprüfung.
    Musterlösung: bruch-xcpt.cpp.
  3. Exceptions: Datenerfassung.
    Musterlösung: mittelw.cpp.

Templates

Siehe auch "Operatoren / Messreihen" und "Operatoren / Addition mit Gedächtnis"!

  1. Templates: Einfache Template-Funktion haeufigstes.
    Musterlösung: haeufigstes.cpp.
  2. Template-Funktionen: Notenliste verwalten.
    Musterlösung: noten.cpp.
  3. Template-Klassen für Paare und Arrays.
    Musterlösung: paar.cpp.
  4. Template-Klassen: Zeichen / Worte / Längen zählen.
    Für die weniger Mutigen: Hauptprogramm zum Erweitern: textcnt-main.cpp.
    (die Guten sollen es selbst versuchen!)
    Musterlösung: textcnt.cpp, textcnt-2.cpp.

STL (Standard Templates Library)

Siehe auch "wxWidgets / File Viewer mit Wort-Index" und die alternative Lösung zu "Vorbereitende Übungen / Zahlen zählen"!

  1. STL-Klassen: Zeichen / Worte / Längen zählen mit STL-map.
    Musterlösung: textcnt-stl.cpp, mit Ableitung: textcnt-stl-abl.cpp.
  2. Statische Member und Methoden, STL list bzw. set:
    Grafische Objekte mit Farbkreis und Liste aller Objekte
    (mit SDL-Grafik).
    Code zum Erweitern: color.h, graobj.h, graobj.cpp, circ.h, circ.cpp, rect.h, rect.cpp, main.cpp.
    Musterlösung Schritt 1: color.h, color.cpp, graobj.h, graobj.cpp, circ.h, circ.cpp, rect.h, rect.cpp, main.cpp.
    Musterlösung Schritt 2: color.h, color.cpp, graobj.h, graobj.cpp, circ.h, circ.cpp, rect.h, rect.cpp, main.cpp.
    Musterlösung Schritt 3: color.h, color.cpp, graobj.h, graobj.cpp, circ.h, circ.cpp, rect.h, rect.cpp, main.cpp.
  3. Templates, STL vector, File-I/O, Exceptions: Datei mit Umordnen der Zeilen kopieren.
    Musterlösung: file-perm.cpp, mit STL Zufallszahlen: file-perm-random.cpp, mit STL shuffle: file-perm-shuffle.cpp.
  4. Templates, STL vector & forward_list, File-I/O, Exceptions: Merge-Sort, rekursiv.
    Musterlösung: merge-sort-list.cpp.
    Musterlösung mit Zusatzaufgabe: merge-sort-list-2.cpp.
 
Stoff C++
Home