<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki.stageing.freitagsrunde.org//api.php?action=feedcontributions&amp;feedformat=atom&amp;user=85.178.209.0</id>
	<title>FreitagsrundenWiki - Benutzerbeiträge [de]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.stageing.freitagsrunde.org//api.php?action=feedcontributions&amp;feedformat=atom&amp;user=85.178.209.0"/>
	<link rel="alternate" type="text/html" href="wiki.stageing.freitagsrunde.org//Spezial:Beitr%C3%A4ge/85.178.209.0"/>
	<updated>2026-10-29T03:13:45Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.45.6</generator>
	<entry>
		<id>wiki.stageing.freitagsrunde.org//index.php?title=C-Kurs/libgdsl-beispiel&amp;diff=12598</id>
		<title>C-Kurs/libgdsl-beispiel</title>
		<link rel="alternate" type="text/html" href="wiki.stageing.freitagsrunde.org//index.php?title=C-Kurs/libgdsl-beispiel&amp;diff=12598"/>
		<updated>2009-09-25T02:41:10Z</updated>

		<summary type="html">&lt;p&gt;85.178.209.0: Die Seite wurde neu angelegt: „&amp;lt;pre&amp;gt; #include &amp;lt;stdio.h&amp;gt; #include &amp;lt;stdlib.h&amp;gt; #include &amp;lt;string.h&amp;gt;  #include &amp;lt;gdsl_types.h&amp;gt; #include &amp;lt;gdsl_stack.h&amp;gt;   /** Copies the given data element (a string in...“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
#include &amp;lt;string.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;gdsl_types.h&amp;gt;&lt;br /&gt;
#include &amp;lt;gdsl_stack.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/** Copies the given data element (a string in our case) */&lt;br /&gt;
gdsl_element_t alloc_element(void *elem) {&lt;br /&gt;
	int len = strlen((char *)elem);&lt;br /&gt;
	gdsl_element_t result = malloc(len + 1);&lt;br /&gt;
	memcpy(result, elem, len + 1);&lt;br /&gt;
	return result;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/** Frees memory consumed by the given element */&lt;br /&gt;
void free_element(gdsl_element_t e) {&lt;br /&gt;
	free(e);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/** Prints the given element to an arbitrary stream */&lt;br /&gt;
void print_element(gdsl_element_t element, FILE *file,&lt;br /&gt;
		   gdsl_location_t location, void *user_data) {&lt;br /&gt;
	fprintf(file, &amp;quot;%i: %s\n&amp;quot;, location, (char*)element);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/** Call-back function for traversal of data structure */&lt;br /&gt;
int do_something(gdsl_element_t element,&lt;br /&gt;
		gdsl_location_t location,&lt;br /&gt;
		void *user_data) {&lt;br /&gt;
	printf(&amp;quot;%s&amp;quot;, (char*)element);	/* just print the element */&lt;br /&gt;
	return GDSL_MAP_CONT;		/* continue traversal */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#define BUFFER_SIZE 1000&lt;br /&gt;
&lt;br /&gt;
int main(int argc, char **argv) {&lt;br /&gt;
&lt;br /&gt;
	/* Initialize the stack structure with pointers to alloc-&lt;br /&gt;
	 * and free functions */&lt;br /&gt;
	gdsl_stack_t stack = gdsl_stack_alloc(&amp;quot;Mein Stack&amp;quot;,&lt;br /&gt;
			                      alloc_element,&lt;br /&gt;
					      free_element);&lt;br /&gt;
&lt;br /&gt;
	/* Fill the stack dynamically */&lt;br /&gt;
        char buffer[BUFFER_SIZE];&lt;br /&gt;
	printf(&amp;quot;&amp;gt; &amp;quot;);&lt;br /&gt;
	fgets(buffer, sizeof(buffer)-1, stdin);&lt;br /&gt;
	while (strlen(buffer) &amp;gt; 1) {&lt;br /&gt;
		gdsl_stack_insert(stack, buffer);&lt;br /&gt;
		printf(&amp;quot;&amp;gt; &amp;quot;);&lt;br /&gt;
	        fgets(buffer, sizeof(buffer)-1, stdin);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/* Traverse stack forward */&lt;br /&gt;
	printf(&amp;quot;map_forward\n-----------\n&amp;quot;);&lt;br /&gt;
	gdsl_stack_map_forward(stack, do_something, NULL);&lt;br /&gt;
&lt;br /&gt;
	/* Traverse stack backward */&lt;br /&gt;
	printf(&amp;quot;map_backward\n------------\n&amp;quot;);&lt;br /&gt;
	gdsl_stack_map_backward(stack, do_something, NULL);&lt;br /&gt;
	&lt;br /&gt;
	/* printf(&amp;quot;\nDump: &amp;quot;);&lt;br /&gt;
	gdsl_stack_write_xml(stack, print_element, stdout, NULL); */&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
	/* Traverse and free stack manually */&lt;br /&gt;
	while (!gdsl_stack_is_empty(stack)) {&lt;br /&gt;
		gdsl_element_t e = gdsl_stack_remove(stack);&lt;br /&gt;
		free_element(e);&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	/* Free complete data structure and its contents */&lt;br /&gt;
	gdsl_stack_free(stack);&lt;br /&gt;
&lt;br /&gt;
	return EXIT_SUCCESS;&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>85.178.209.0</name></author>
	</entry>
	<entry>
		<id>wiki.stageing.freitagsrunde.org//index.php?title=C-Kurs/libgdsl&amp;diff=12597</id>
		<title>C-Kurs/libgdsl</title>
		<link rel="alternate" type="text/html" href="wiki.stageing.freitagsrunde.org//index.php?title=C-Kurs/libgdsl&amp;diff=12597"/>
		<updated>2009-09-25T02:21:50Z</updated>

		<summary type="html">&lt;p&gt;85.178.209.0: Die Seite wurde neu angelegt: „== Aufgabe ==  In dieser Aufgabe geht es um die Arbeit mit einer externen Bibliothek. Hierzu sollst du das von dir zuvor implementierte Programm [[Ckurs2009/Array...“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Aufgabe ==&lt;br /&gt;
&lt;br /&gt;
In dieser Aufgabe geht es um die Arbeit mit einer externen Bibliothek. Hierzu sollst du das von dir zuvor implementierte Programm [[Ckurs2009/Arrayuebergabe | Arrayuebergabe]] überarbeiten, so dass es Listenfunktionen der [http://home.gna.org/gdsl GDSL] (siehe [http://home.gna.org/gdsl/1.4/html/group__gdsl__list.html gdsl_list_t]) anstelle von Arrays verwendet. Eine Anleitung zur Installation der Bibliothek in deinem Heimatverzeichnis sowie ein einfaches Beispiel findest du in den [http://user.cs.tu-berlin.de/~mkresse/vortrag9-martin.pdf Folien] zur 9. VL.&lt;br /&gt;
Zum Füllen der Liste kannst du die Funktion [http://home.gna.org/gdsl/1.4/html/group__gdsl__list.html#g545a2c14092c059adcb65a9d71fb22c7 &amp;lt;code&amp;gt;gdsl_list_insert_tail()&amp;lt;/code&amp;gt;], zum Finden des Maximalwertes die Funktion [http://home.gna.org/gdsl/1.4/html/group__gdsl__list.html#gaa1aa93760c74b8868f598ae4762034f &amp;lt;code&amp;gt;gdsl_list_map_forward&amp;lt;/code&amp;gt;] verwenden.&lt;br /&gt;
&lt;br /&gt;
== Zusatzaufgabe ==&lt;br /&gt;
&lt;br /&gt;
Verwende zur Suche nach dem grössten Element die Funktion [http://home.gna.org/gdsl/1.4/html/group__gdsl__list.html#gd2b842ccc7f0ed732df149e4f493cc06 &amp;lt;code&amp;gt;gdsl_list_search_max()&amp;lt;/code&amp;gt;]. 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:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;int compare_func(const gdsl_element_t e1, void *e2);&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Rückgabewert gibt das Ergebnis des Vergleichs an:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt; 0 falls e1 &amp;lt; e2,&lt;br /&gt;
* 0 falls e1 == e2 oder&lt;br /&gt;
* &amp;gt; 0 falls e1 &amp;gt; e2&lt;br /&gt;
&lt;br /&gt;
Welchen Vorteil hat die Definition einer solchen compare-Funktion gegenüber der Verwendung von &amp;lt;code&amp;gt;gdsl_list_map_forward()&amp;lt;/code&amp;gt;?&lt;br /&gt;
&lt;br /&gt;
== Kommentare ==&lt;br /&gt;
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 &amp;quot;bearbeiten&amp;quot; und schreibe deinen Kommentar direkt ins Wiki. Keine Scheu, es geht nichts kaputt ;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Als kleine Starthilfe folgt ein Beispiel, wie so ein Kommentar formatiert sein könnte. Mit &amp;quot;Vorschau zeigen&amp;quot; kannst du dir ansehen, was deine Änderung bewirken würde, ohne wirklich etwas zu ändern.&lt;br /&gt;
Du musst übrigens außerhalb dieses auskommentieren Bereichs schreiben ;)&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>85.178.209.0</name></author>
	</entry>
	<entry>
		<id>wiki.stageing.freitagsrunde.org//index.php?title=C-Kurs/StdLib&amp;diff=12596</id>
		<title>C-Kurs/StdLib</title>
		<link rel="alternate" type="text/html" href="wiki.stageing.freitagsrunde.org//index.php?title=C-Kurs/StdLib&amp;diff=12596"/>
		<updated>2009-09-25T00:48:47Z</updated>

		<summary type="html">&lt;p&gt;85.178.209.0: Die Seite wurde neu angelegt: „== Aufgabe ==  Schreibe ein Programm, das [http://de.wikipedia.org/wiki/Umgebungsvariable Umgebungsvariablen] ausgeben kann. Das Programm soll den Namen der Umgeb...“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Aufgabe ==&lt;br /&gt;
&lt;br /&gt;
Schreibe ein Programm, das [http://de.wikipedia.org/wiki/Umgebungsvariable Umgebungsvariablen] ausgeben kann.&lt;br /&gt;
Das Programm soll den Namen der Umgebungsvariable als Kommandozeilenparameter entgegen nehmen, und den Inhalt der angegebenen Variablen, sofern sie nicht undefiniert ist, ausgeben.&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&amp;lt;pre&amp;gt;(~): ./printvar HOME&lt;br /&gt;
/usr/local/bin:/usr/ccs/bin:/usr/ucb:/usr/bin:/usr/sfw/bin:/opt/csw/bin:/usr/openwin/bin&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hinweis: Eine passende Funktion zum Auslesen von Umgebungsvariablen ist Bestandteil der Standard C Library. Eine Übersicht findest du zum Beispiel [http://www.cplusplus.com/reference/clibrary/ hier].&lt;/div&gt;</summary>
		<author><name>85.178.209.0</name></author>
	</entry>
</feed>