Sitzung: Jeden Freitag in der Vorlesungszeit ab 16 Uhr c. t. im MAR 0.005. In der vorlesungsfreien Zeit unregelmäßig (Jemensch da?). Macht mit!

C-Kurs/libgdsl

< C-Kurs
Version vom 5. März 2013, 17:37 Uhr von PaulG (Diskussion | Beiträge) (verschob „Ckurs/libgdsl“ nach „C-Kurs/libgdsl“)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)

Aufgabe

In dieser Aufgabe geht es um die Arbeit mit einer externen Bibliothek. Hierzu sollst du das von dir zuvor implementierte Programm Arrayuebergabe überarbeiten, so dass es Listenfunktionen der GDSL (siehe gdsl_list_t) anstelle von Arrays verwendet. Eine Anleitung zur Installation der Bibliothek in deinem Heimatverzeichnis sowie ein einfaches Beispiel findest du in den Folien zur 9. VL. Zum Füllen der Liste kannst du die Funktion gdsl_list_insert_tail(), zum Finden des Maximalwertes die Funktion gdsl_list_map_forward verwenden.

Zusatzaufgabe

Verwende zur Suche nach dem grössten Element die Funktion gdsl_list_search_max(). Damit die Bibliothek weiss, wie die generischen Elemente miteinander verglichen werden können, musst du zur Suche eine Funktion angeben, die zwei Datenelemente miteinander vergleichen kann. Die Signatur der Funktion sollte dazu folgendermaßen aussehen:

int compare_func(const gdsl_element_t e1, void *e2);

Der Rückgabewert gibt das Ergebnis des Vergleichs an:

  • < 0 falls e1 < e2,
  • 0 falls e1 == e2 oder
  • > 0 falls e1 > e2

Welchen Vorteil hat die Definition einer solchen compare-Funktion gegenüber der Verwendung von gdsl_list_map_forward()?

Kommentare

Wenn du Anmerkungen zur Aufgabe hast oder Lob und Kritik loswerden möchtest, ist hier die richtige Stelle dafür. Klicke einfach ganz rechts auf "bearbeiten" und schreibe deinen Kommentar direkt ins Wiki. Keine Scheu, es geht nichts kaputt ;)