<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki.freitagsrunde.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=P.brodmann</id>
	<title>FreitagsrundenWiki - Benutzerbeiträge [de]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.freitagsrunde.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=P.brodmann"/>
	<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/Spezial:Beitr%C3%A4ge/P.brodmann"/>
	<updated>2026-04-15T09:31:15Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.31.16</generator>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=C-Kurs/Zahlen_sagen/Musterl%C3%B6sung&amp;diff=14823</id>
		<title>C-Kurs/Zahlen sagen/Musterlösung</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=C-Kurs/Zahlen_sagen/Musterl%C3%B6sung&amp;diff=14823"/>
		<updated>2010-09-11T13:06:42Z</updated>

		<summary type="html">&lt;p&gt;P.brodmann: &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;
#include &amp;lt;math.h&amp;gt;&lt;br /&gt;
#include &amp;lt;limits.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/** Größe des Puffers für den Ergebnisstring */&lt;br /&gt;
#define BUFFER_SIZE 1000&lt;br /&gt;
&lt;br /&gt;
/** Einerstellen zur allgemeinen Zusammensetzung. */&lt;br /&gt;
const char* EINER[] = {NULL, &amp;quot;eins&amp;quot;, &amp;quot;zwei&amp;quot;, &amp;quot;drei&amp;quot;, &amp;quot;vier&amp;quot;,&lt;br /&gt;
    &amp;quot;fünf&amp;quot;, &amp;quot;sechs&amp;quot;, &amp;quot;sieben&amp;quot;, &amp;quot;acht&amp;quot;, &amp;quot;neun&amp;quot;};&lt;br /&gt;
&lt;br /&gt;
/** Zehnerstellen zur allgemeinen Zusammensetzung */&lt;br /&gt;
char* ZEHNER[] = {NULL, &amp;quot;zehn&amp;quot;, &amp;quot;zwanzig&amp;quot;, &amp;quot;dreißig&amp;quot;, &amp;quot;vierzig&amp;quot;,&lt;br /&gt;
    &amp;quot;fünfzig&amp;quot;, &amp;quot;sechzig&amp;quot;, &amp;quot;siebzig&amp;quot;, &amp;quot;achtzig&amp;quot;, &amp;quot;neunzig&amp;quot;};&lt;br /&gt;
&lt;br /&gt;
/** Anzahl der vorhandenen Ausnahmen */&lt;br /&gt;
#define ANZAHL_AUSNAHMEN 18&lt;br /&gt;
&lt;br /&gt;
/** Ausnahmen, die sich nicht zusammensetzen lassen. */&lt;br /&gt;
char* AUSNAHMEN[] =&lt;br /&gt;
	{NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,&lt;br /&gt;
	 &amp;quot;elf&amp;quot;, &amp;quot;zwölf&amp;quot;, NULL, NULL, NULL, &amp;quot;sechzehn&amp;quot;, &amp;quot;siebzehn&amp;quot;};&lt;br /&gt;
 &lt;br /&gt;
/** Anzahl der vorhandenen 1000er-Potenzen */&lt;br /&gt;
#define ANZAHL_POTENZEN 4&lt;br /&gt;
&lt;br /&gt;
/** 1000er-Potenzen in ihrer Einzahl */&lt;br /&gt;
char* POTENZEN_SINGULAR[] = {&amp;quot;&amp;quot;, &amp;quot;tausend&amp;quot;, &amp;quot; Million &amp;quot;, &amp;quot; Milliarde &amp;quot;, &amp;quot; Billion &amp;quot;};&lt;br /&gt;
&lt;br /&gt;
/** 1000er-Potenzen in ihrer Mehrzahl */&lt;br /&gt;
char* POTENZEN_PLURAL[] = {&amp;quot;&amp;quot;, &amp;quot;tausend&amp;quot;, &amp;quot; Millionen &amp;quot;, &amp;quot; Milliarden &amp;quot;, &amp;quot; Billionen &amp;quot;};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Kopiert die übergebene Zahl 0 &amp;lt; x &amp;lt; 1000 als Zahlwort&lt;br /&gt;
 * in den übergebenen Puffer.&lt;br /&gt;
 */&lt;br /&gt;
 void say_short_number(long int x, char *buffer, int bufsize) {&lt;br /&gt;
	/* Hunderterstelle ausrechnen */&lt;br /&gt;
	int hunderter = x/100;&lt;br /&gt;
	if (hunderter &amp;gt; 0) {&lt;br /&gt;
		/* an den Pufferstring anhängen */&lt;br /&gt;
        if (hunderter == 1) {&lt;br /&gt;
            /* Ausnahme: &amp;quot;einhundert&amp;quot; statt &amp;quot;einshundert&amp;quot; */&lt;br /&gt;
            strncat(buffer, &amp;quot;ein&amp;quot;, bufsize-strlen(buffer)-1);&lt;br /&gt;
        } else {&lt;br /&gt;
            strncat(buffer, EINER[hunderter], bufsize-strlen(buffer)-1);&lt;br /&gt;
        }&lt;br /&gt;
		strncat(buffer, &amp;quot;hundert&amp;quot;, bufsize-strlen(buffer)-1);&lt;br /&gt;
&lt;br /&gt;
		/* Hunderterstelle entfernen */&lt;br /&gt;
		x %= 100;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	if ((x &amp;lt; ANZAHL_AUSNAHMEN) &amp;amp;&amp;amp; (AUSNAHMEN[x] != NULL)) {&lt;br /&gt;
		/* eine Ausnahme wie &amp;quot;zwölf&amp;quot;, oder */&lt;br /&gt;
		strncat(buffer, AUSNAHMEN[x], bufsize - strlen(buffer) - 1);&lt;br /&gt;
	} else {&lt;br /&gt;
		/* Rest aus Einer- und Zehnerstelle zusammensetzen */&lt;br /&gt;
		int zehner = x/10, einer = x%10;&lt;br /&gt;
		if (einer &amp;gt; 0)&lt;br /&gt;
			strncat(buffer, EINER[einer], bufsize - strlen(buffer) - 1);&lt;br /&gt;
&lt;br /&gt;
		if (zehner &amp;gt; 0) {&lt;br /&gt;
			if ((zehner &amp;gt; 1) &amp;amp;&amp;amp; (einer &amp;gt; 0))&lt;br /&gt;
				strncat(buffer, &amp;quot;und&amp;quot;, bufsize - strlen(buffer) - 1);      /* ab 20 ein &amp;quot;und&amp;quot; einfügen */&lt;br /&gt;
			strncat(buffer, ZEHNER[zehner], bufsize - strlen(buffer) - 1);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
/**&lt;br /&gt;
 * Generiert die natürlichsprachliche Repräsentation (Zahlwort) der&lt;br /&gt;
 * übergebenen Zahl und kopiert diese in den angegebenen Puffer.&lt;br /&gt;
 */&lt;br /&gt;
void say_number(long int x, char* buffer, int bufsize) {&lt;br /&gt;
	int i;&lt;br /&gt;
	&lt;br /&gt;
	/* Der Null kommt wie immer eine Sonderbehandlung zugute */&lt;br /&gt;
	if (x == 0) {&lt;br /&gt;
		strncat(buffer, &amp;quot;null&amp;quot;, bufsize - strlen(buffer) - 1);&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/* Alle relevanten 1000er-Potenzen durchgehen */&lt;br /&gt;
	for (i=ANZAHL_POTENZEN-1; i&amp;gt;=0;  i--) {&lt;br /&gt;
		/* Potenz für relevante Stellen ausrechnen */&lt;br /&gt;
		long int power = floor(pow(10, i*3) + 0.5);&lt;br /&gt;
&lt;br /&gt;
		/* Stellen für diese Potenz extrahieren */&lt;br /&gt;
		int value = x/power;&lt;br /&gt;
		if (value &amp;gt; 0) {&lt;br /&gt;
			if ((value == 1) &amp;amp;&amp;amp; (i &amp;gt;= 1)) {&lt;br /&gt;
                if (i == 1) {&lt;br /&gt;
                    /* Ausnahme: &amp;quot;eintausend&amp;quot; statt &amp;quot;einstausend&amp;quot; */&lt;br /&gt;
                    strncat(buffer, &amp;quot;ein&amp;quot;, bufsize - strlen(buffer) - 1);&lt;br /&gt;
				} else {&lt;br /&gt;
                    /* Ausnahme: &amp;quot;eine Million&amp;quot; etc. statt &amp;quot;eins Million&amp;quot; */&lt;br /&gt;
                    strncat(buffer, &amp;quot;eine&amp;quot;, bufsize - strlen(buffer) - 1);&lt;br /&gt;
				}&lt;br /&gt;
                /* Einzahl von Million etc. berücksichtigen */&lt;br /&gt;
                strncat(buffer, POTENZEN_SINGULAR[i], bufsize - strlen(buffer) - 1);&lt;br /&gt;
			} else {&lt;br /&gt;
				say_short_number(value, buffer, bufsize);&lt;br /&gt;
				strncat(buffer, POTENZEN_PLURAL[i], bufsize - strlen(buffer) - 1);&lt;br /&gt;
			}&lt;br /&gt;
            &lt;br /&gt;
			/* bereits ausgegebene Stellen abschneiden */&lt;br /&gt;
			x %= power;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int main(int argc, char **argv) {&lt;br /&gt;
    long int number;&lt;br /&gt;
    char *buffer;&lt;br /&gt;
    &lt;br /&gt;
	/* überprüfen, ob notwendige Kommandozeilenparameter angegeben wurden */&lt;br /&gt;
	if (argc != 2) {&lt;br /&gt;
		printf(&amp;quot;Usage: %s NUMBER \n&amp;quot;, argv[0]);&lt;br /&gt;
		exit(1);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/* numerischen String zu Ganzzahl konvertieren */&lt;br /&gt;
	number = atol(argv[1]);&lt;br /&gt;
	if (number &amp;lt;= 0 || number == LONG_MAX) {&lt;br /&gt;
        printf(&amp;quot;Invalid number.\n&amp;quot;);&lt;br /&gt;
		exit(1);&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	/* Puffer für Ergebnisstring allozieren */&lt;br /&gt;
	buffer = malloc(BUFFER_SIZE);&lt;br /&gt;
	if (!buffer) {&lt;br /&gt;
		printf(&amp;quot;Unable to allocate memory.\n&amp;quot;);&lt;br /&gt;
		exit(1);&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	/* Speicher mit Nullbyte initialisieren (= leerer String) */&lt;br /&gt;
	buffer[0] = '\0';&lt;br /&gt;
&lt;br /&gt;
	/* Zahlwort in den Puffer schreiben */&lt;br /&gt;
	say_number(number, buffer, BUFFER_SIZE);&lt;br /&gt;
	&lt;br /&gt;
	/* und ausgeben */&lt;br /&gt;
	printf(&amp;quot;%s\n&amp;quot;, buffer);&lt;br /&gt;
	&lt;br /&gt;
	/* Speicher freigeben */&lt;br /&gt;
	free(buffer);&lt;br /&gt;
&lt;br /&gt;
	/* Alles ok, Fehlercode 0 */&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>P.brodmann</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=C-Kurs/Zahlen_sagen&amp;diff=14822</id>
		<title>C-Kurs/Zahlen sagen</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=C-Kurs/Zahlen_sagen&amp;diff=14822"/>
		<updated>2010-09-11T13:01:37Z</updated>

		<summary type="html">&lt;p&gt;P.brodmann: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Aufgabenstellung ==&lt;br /&gt;
&lt;br /&gt;
Schreibe ein Programm, das eine als Kommandozeilenparameter in numerischer Form übergebene Zahl in Worten (also als Zahlwort) ausgibt.&lt;br /&gt;
Ein Aufruf des fertigen Programms könnte etwa wie folgt aussehen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(~): ./zahlwort 174367&lt;br /&gt;
einhundertvierundsiebzigtausend dreihundertsiebenundsechzig&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Hinweise ===&lt;br /&gt;
&lt;br /&gt;
* Alloziere zunächst einen Speicherblock, der groß genug ist, um das komplette Zahlwort zu enthalten (z.B. via &amp;lt;code&amp;gt;[http://www.cplusplus.com/reference/clibrary/cstdlib/malloc malloc]&amp;lt;/code&amp;gt;).&lt;br /&gt;
* Schreibe eine Funktion &amp;lt;code&amp;gt;say_short_number(int number, char* buffer)&amp;lt;/code&amp;gt;, die eine übergebene Zahl zwischen 1 und 999 als Zahlwort in den ebenfalls übergebenen Puffer kopiert.&lt;br /&gt;
* Schreibe dann eine Funktion &amp;lt;code&amp;gt;say_number(long int number, char* buffer)&amp;lt;/code&amp;gt;, die eine (nahezu) beliebig große Zahl übergeben bekommt und für alle in der Zahl verfügbaren 10^3er-Gruppen (tausend, million(en), milliarde(n), ...) jeweils &amp;lt;code&amp;gt;say_short_number()&amp;lt;/code&amp;gt; aufruft.&lt;br /&gt;
* Zuordnungen von Zahl zu Zahlwort kannst du statt mittels case-Anweisung auch durch ein Array von Zeichenketten definieren.&lt;br /&gt;
* Beim Zerlegen von Zahlen helfen ggf. die Funktionen &amp;lt;code&amp;gt;[http://www.cplusplus.com/reference/clibrary/cmath/pow pow()]&amp;lt;/code&amp;gt; und/oder &amp;lt;code&amp;gt;[http://www.cplusplus.com/reference/clibrary/cmath/log10 log10()]&amp;lt;/code&amp;gt; aus dem Standardheader [http://www.cplusplus.com/reference/clibrary/cmath math.h].&lt;br /&gt;
* Wenn du Funtionen aus der math.h benutzt musst du beim Kompilieren mit der GCC das Kommando '-lm' angeben damit die entsprechende Libary einzubinden. (also z.B. 'gcc -lm zahlwort.c -o zahlwort')&lt;br /&gt;
* Beachte die Ausnahmen der Zahlwörter elf, zwölf, sechzehn und siebzehn im Gegensatz zu den übrigen Zahlen unter 20.&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;
&lt;br /&gt;
==== Robert ====&lt;br /&gt;
Na mal schauen, ob irgendjemand diese Funktion wirklich benutzt. Ich fände es jedenfalls toll.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie: CKurs Aufgaben]]&lt;/div&gt;</summary>
		<author><name>P.brodmann</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=C-Kurs/Zahlen_sagen&amp;diff=14821</id>
		<title>C-Kurs/Zahlen sagen</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=C-Kurs/Zahlen_sagen&amp;diff=14821"/>
		<updated>2010-09-11T13:01:00Z</updated>

		<summary type="html">&lt;p&gt;P.brodmann: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Aufgabenstellung ==&lt;br /&gt;
&lt;br /&gt;
Schreibe ein Programm, das eine als Kommandozeilenparameter in numerischer Form übergebene Zahl in Worten (also als Zahlwort) ausgibt.&lt;br /&gt;
Ein Aufruf des fertigen Programms könnte etwa wie folgt aussehen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(~): ./zahlwort 174367&lt;br /&gt;
einhundertvierundsiebzigtausend dreihundertsiebenundsechzig&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Hinweise ===&lt;br /&gt;
&lt;br /&gt;
* Alloziere zunächst einen Speicherblock, der groß genug ist, um das komplette Zahlwort zu enthalten (z.B. via &amp;lt;code&amp;gt;[http://www.cplusplus.com/reference/clibrary/cstdlib/malloc malloc]&amp;lt;/code&amp;gt;).&lt;br /&gt;
* Schreibe eine Funktion &amp;lt;code&amp;gt;say_short_number(int number, char* buffer)&amp;lt;/code&amp;gt;, die eine übergebene Zahl zwischen 1 und 999 als Zahlwort in den ebenfalls übergebenen Puffer kopiert.&lt;br /&gt;
* Schreibe dann eine Funktion &amp;lt;code&amp;gt;say_number(long int number, char* buffer)&amp;lt;/code&amp;gt;, die eine (nahezu) beliebig große Zahl übergeben bekommt und für alle in der Zahl verfügbaren 10^3er-Gruppen (tausend, million(en), milliarde(n), ...) jeweils &amp;lt;code&amp;gt;say_short_number()&amp;lt;/code&amp;gt; aufruft.&lt;br /&gt;
* Zuordnungen von Zahl zu Zahlwort kannst du statt mittels case-Anweisung auch durch ein Array von Zeichenketten definieren.&lt;br /&gt;
* Beim Zerlegen von Zahlen helfen ggf. die Funktionen &amp;lt;code&amp;gt;[http://www.cplusplus.com/reference/clibrary/cmath/pow pow()]&amp;lt;/code&amp;gt; und/oder &amp;lt;code&amp;gt;[http://www.cplusplus.com/reference/clibrary/cmath/log10 log10()]&amp;lt;/code&amp;gt; aus dem Standardheader [http://www.cplusplus.com/reference/clibrary/cmath math.h].&lt;br /&gt;
* Wenn du Funtionen aus der math.h benutzt musst du beim Kompilieren mit der GCC das Kommando '-lm' angeben damit die entsprechende Libary einzubinden. (also z.B. 'gcc -lm zahlen.c -o zahlen')&lt;br /&gt;
* Beachte die Ausnahmen der Zahlwörter elf, zwölf, sechzehn und siebzehn im Gegensatz zu den übrigen Zahlen unter 20.&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;
&lt;br /&gt;
==== Robert ====&lt;br /&gt;
Na mal schauen, ob irgendjemand diese Funktion wirklich benutzt. Ich fände es jedenfalls toll.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie: CKurs Aufgaben]]&lt;/div&gt;</summary>
		<author><name>P.brodmann</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=C-Kurs/Zahlen_sagen&amp;diff=14820</id>
		<title>C-Kurs/Zahlen sagen</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=C-Kurs/Zahlen_sagen&amp;diff=14820"/>
		<updated>2010-09-11T13:00:39Z</updated>

		<summary type="html">&lt;p&gt;P.brodmann: CKURS REVIEW zahlen sagen -lm&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Aufgabenstellung ==&lt;br /&gt;
&lt;br /&gt;
Schreibe ein Programm, das eine als Kommandozeilenparameter in numerischer Form übergebene Zahl in Worten (also als Zahlwort) ausgibt.&lt;br /&gt;
Ein Aufruf des fertigen Programms könnte etwa wie folgt aussehen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(~): ./zahlwort 174367&lt;br /&gt;
einhundertvierundsiebzigtausend dreihundertsiebenundsechzig&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Hinweise ===&lt;br /&gt;
&lt;br /&gt;
* Alloziere zunächst einen Speicherblock, der groß genug ist, um das komplette Zahlwort zu enthalten (z.B. via &amp;lt;code&amp;gt;[http://www.cplusplus.com/reference/clibrary/cstdlib/malloc malloc]&amp;lt;/code&amp;gt;).&lt;br /&gt;
* Schreibe eine Funktion &amp;lt;code&amp;gt;say_short_number(int number, char* buffer)&amp;lt;/code&amp;gt;, die eine übergebene Zahl zwischen 1 und 999 als Zahlwort in den ebenfalls übergebenen Puffer kopiert.&lt;br /&gt;
* Schreibe dann eine Funktion &amp;lt;code&amp;gt;say_number(long int number, char* buffer)&amp;lt;/code&amp;gt;, die eine (nahezu) beliebig große Zahl übergeben bekommt und für alle in der Zahl verfügbaren 10^3er-Gruppen (tausend, million(en), milliarde(n), ...) jeweils &amp;lt;code&amp;gt;say_short_number()&amp;lt;/code&amp;gt; aufruft.&lt;br /&gt;
* Zuordnungen von Zahl zu Zahlwort kannst du statt mittels case-Anweisung auch durch ein Array von Zeichenketten definieren.&lt;br /&gt;
* Beim Zerlegen von Zahlen helfen ggf. die Funktionen &amp;lt;code&amp;gt;[http://www.cplusplus.com/reference/clibrary/cmath/pow pow()]&amp;lt;/code&amp;gt; und/oder &amp;lt;code&amp;gt;[http://www.cplusplus.com/reference/clibrary/cmath/log10 log10()]&amp;lt;/code&amp;gt; aus dem Standardheader [http://www.cplusplus.com/reference/clibrary/cmath math.h].&lt;br /&gt;
* Wenn du Funtionen aus der math.h benutzt musst du beim Kompilieren mit der GCC das Kommando '-lm' angeben damit die entsprechende Libary einzubinden. (also z.B. gcc -lm zahlen.c -o zahlen)&lt;br /&gt;
* Beachte die Ausnahmen der Zahlwörter elf, zwölf, sechzehn und siebzehn im Gegensatz zu den übrigen Zahlen unter 20.&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;
&lt;br /&gt;
==== Robert ====&lt;br /&gt;
Na mal schauen, ob irgendjemand diese Funktion wirklich benutzt. Ich fände es jedenfalls toll.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie: CKurs Aufgaben]]&lt;/div&gt;</summary>
		<author><name>P.brodmann</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=C-Kurs/%C3%9Cbungsaufgaben&amp;diff=14819</id>
		<title>C-Kurs/Übungsaufgaben</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=C-Kurs/%C3%9Cbungsaufgaben&amp;diff=14819"/>
		<updated>2010-09-11T10:37:53Z</updated>

		<summary type="html">&lt;p&gt;P.brodmann: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Wir haben jeder Aufgabe eine Einschätzung ihrer Schwierigkeit auf einer Skala von 1 bis 10 vorangestellt. Bei dieser Einschätzung sind wir von einem Gehirn ausgegangen, für welches das jeweilige Themengebiet völlig neu ist, das jedoch schon ein ganz gutes Verständnis dafür hat wie eine Programmiersprache denn so funktioniert. &lt;br /&gt;
Entsprechend kann eine schwer bewertete Aufgabe aus einem frühen Themengebiet für manch einen sehr einfach oder eine leicht bewertete aus einem späten Themengebiet für einen anderen sehr schwer sein. Es ist nur ein Wert, der euch helfen soll eure nächste Aufgabe zu wählen. &lt;br /&gt;
&lt;br /&gt;
Falls ihr Anmerkungen zu den Aufgaben habt, könnt ihr die Diskussionsseiten der jeweiligen Aufgaben nutzen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Schwierigkeitsgrade ==&lt;br /&gt;
&lt;br /&gt;
#  Reines Tutorial. Man muss nicht viel selbst denken&lt;br /&gt;
#  ...&lt;br /&gt;
#  Leichte Übungsaufgabe. Studies, die noch eher unsicher sind werden hier gut begleitet.&lt;br /&gt;
#  ...&lt;br /&gt;
#  Typische Aufgabe. Man muss den Kopf benutzen, bekommt an schwierigen Stellen aber Hilfestellungen.&lt;br /&gt;
#  ...&lt;br /&gt;
#  Herausfordernd, eher etwas für Studies die etwas fitter sind.&lt;br /&gt;
#  ...&lt;br /&gt;
#  Auch erfahrene Programmierer werden hier ein bis zwei Übungen beschäftigt sein&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
#  Tja, die Idee war da. Wir finden sie auch gut, aber es könnte wirklich anstrengend werden.&lt;br /&gt;
&lt;br /&gt;
== Die Aufgaben ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;2&amp;quot;&lt;br /&gt;
 |- bgcolor=&amp;quot;#D8D8D8&amp;quot;&lt;br /&gt;
 !Aufgabe&lt;br /&gt;
 !Schwierigkeit&lt;br /&gt;
 !Vorwissen&lt;br /&gt;
 !Lerneffekte&lt;br /&gt;
 !Bearbeiter&lt;br /&gt;
 !Korrektur gelesen&lt;br /&gt;
 !Musterlösung&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Von der Konsole zum HelloWorld | Von der Konsole zum HelloWorld]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |1&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |1. VL&lt;br /&gt;
 | Konsole benutzen, Hello World&lt;br /&gt;
 | Sebastian D.&lt;br /&gt;
 | [[Benutzer:Mario|Mario]] (2009), &lt;br /&gt;
 | &lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Fakultät | Fakultät]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |1. VL&lt;br /&gt;
 | Schleifen&lt;br /&gt;
 | Sebastian D.&lt;br /&gt;
 | Daniel (2009), &lt;br /&gt;
 |  &lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Fibonacci-Folge|Fibonacci-Folge]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |1. VL&lt;br /&gt;
 | Funktionen &amp;lt;br&amp;gt; Rekursion&lt;br /&gt;
 | Paul B.&lt;br /&gt;
 | [[Benutzer:Mario|Mario]] (2010)&lt;br /&gt;
 | [[Ckurs2009/Fibonacci-Folge/Musterlösung | Fibonacci-Folge]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/digitalesSchloesserKnacken|digitales Schloesser knacken]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |1. VL&lt;br /&gt;
 | Kontrollstrukturen &amp;lt;br&amp;gt;Bitweise Operatoren&lt;br /&gt;
 | Paul B.&lt;br /&gt;
 | Eugen R. (2010)&lt;br /&gt;
 | [[Ckurs2009/digitalesSchloesserKnacken/Musterlösung | digitales Schloesser knacken]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Rekursives_arbeiten|Rekursives Arbeiten]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3-5&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |1. VL&lt;br /&gt;
 | Bekannte Operatoren wie + durch Funktionen succ und neg nachbilden&lt;br /&gt;
 | Eugen R.&lt;br /&gt;
 | Paul B.(2010)&lt;br /&gt;
 | [[Ckurs2009/Rekursives_arbeiten/Musterlösung | Rekursives Arbeiten]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Base64 | Base64]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |6&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |1. VL&lt;br /&gt;
 | Operatoren&lt;br /&gt;
 | Sebastian D.&lt;br /&gt;
 | Paul B.(2010)&lt;br /&gt;
 | [[Ckurs2009/Base64/Musterlösung | Base64]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/EingabeAusgabe | Ein- und Ausgabe]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |1&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2. VL&lt;br /&gt;
 | Einlesen von Benutzereingaben&amp;lt;br&amp;gt;Ausgabe derselben&lt;br /&gt;
 | [[Benutzer:Mario|Mario]]&lt;br /&gt;
 | nion (2009), &lt;br /&gt;
 | [[Ckurs2009/EingabeAusgabe/Musterlösung | Ein- und Ausgabe]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Taschenrechner | Taschenrechner]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2. VL&lt;br /&gt;
 | Eingabe+Ausgabe&amp;lt;br&amp;gt;Mathematische Operatoren&lt;br /&gt;
 | [[Benutzer:Mario|Mario]]&lt;br /&gt;
 | [[Benutzer:Tkroenert|TKroenert]] (2009), &lt;br /&gt;
 | [[Ckurs2009/Taschenrechner/Musterlösung | Taschenrechner]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/VerschachtelteSchleifen | Verschachtelte Schleifen]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2. VL&lt;br /&gt;
 | Umgang mit mehreren verschachtelten Schleifen&lt;br /&gt;
 | [[Benutzer:Dank|Daniel K.]]&lt;br /&gt;
 | AlexanderK (2009), &lt;br /&gt;
 |&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Glückspiel | Glücksspiel]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2. VL&lt;br /&gt;
 | Anwenden von Fallunterscheidungen und Einlesen von Werten aus der Konsole&lt;br /&gt;
 | [[Benutzer:Dank|Daniel K.]]&lt;br /&gt;
 | AlexanderK (2009), &lt;br /&gt;
 | [[Ckurs2009/Glückspiel/Musterlösung | Glückspiel]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Wochentag | Wochentagsrechnung]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2. VL&lt;br /&gt;
 | Einlesen von Benutzereingaben&amp;lt;br&amp;gt;Mathematikverständniss&lt;br /&gt;
 | [[Benutzer:Mario|Mario]]&lt;br /&gt;
 | nion (Musterlösung noch nicht vorhanden)  (2009), &lt;br /&gt;
 | &lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Taschenrechner2.0 | Taschenrechner ''2.0'']]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |8&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2. VL&lt;br /&gt;
 | Knobeln&amp;lt;br&amp;gt;Komplexes Aufgaben lösen&lt;br /&gt;
 | [[Benutzer:Mario|Mario]]&lt;br /&gt;
 | Martin K. (2009), &lt;br /&gt;
 | [[Ckurs2009/Taschenrechner2.0/Musterlösung | Taschenrechner ''2.0'']]&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Call by reference | Call by reference]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Einfache Anwendung von &amp;amp;/*&lt;br /&gt;
 | sping&lt;br /&gt;
 | nion (2009), &lt;br /&gt;
 | [[Ckurs2009/Call by reference/Musterlösung | Call by reference]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2010/String to Double | String to Double]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Original-Dokumentation anwenden (Opengroup, man pages)&amp;lt;br&amp;gt;Pointer auf Pointer&amp;lt;br&amp;gt;Const correctness&amp;lt;br&amp;gt;Strings&lt;br /&gt;
 | sping&lt;br /&gt;
 | Eugen R. (2010)&lt;br /&gt;
 | vorhanden&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Text processing | Text processing]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4, 6&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Strings&amp;lt;br&amp;gt;Pointer-Arithmetik&amp;lt;br&amp;gt;Pointer auf Pointer&amp;lt;br&amp;gt;Refactoring&lt;br /&gt;
 | sping&lt;br /&gt;
 | [[Benutzer:Mario|Mario]] (2009), &lt;br /&gt;
 | [[Ckurs2009/Text processing/Musterlösung | Text processing]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Palindrome | Palindrome]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Pointer und Strings&lt;br /&gt;
 | [[Benutzer:Dank|Daniel K.]]&lt;br /&gt;
 | nion (2009), &lt;br /&gt;
 | [[Ckurs2009/Palindrome/Musterlösung | Palindrome ]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/(Pointer) Swapping | (Pointer) Swapping]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Pointer und Arrays benutzen, generisches swap&lt;br /&gt;
 | Katrin&lt;br /&gt;
 | Katrin (2010, wird nochmal überarbeitet bzw. mit mehr erklärendem Text versehen)&lt;br /&gt;
 | [[Ckurs2009/(Pointer) Swapping/Musterlösung | (Pointer) Swapping]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Matrizenmultiplikation | Matrizenmultiplikation]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |6&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Mehrdimensionale Arrays&amp;lt;br&amp;gt;const correctness&lt;br /&gt;
 | sping&lt;br /&gt;
 | [[Benutzer:Mario|Mario]] (2009), &lt;br /&gt;
 | [[Ckurs2009/Matrizenmultiplikation/Musterlösung | Matrizenmultiplikation]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs/DreiD | 3D mit C]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5-9&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Mathematische Rechenoperationen, Algorithmik&lt;br /&gt;
 | AndreasF&lt;br /&gt;
 | &lt;br /&gt;
 | vorhanden&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Arrayuebergabe | Arrayuebergabe]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4/5&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4. VL&lt;br /&gt;
 | Einlesen von Benutzereingaben&amp;lt;br&amp;gt;Pointer und Pointerarithmetik&lt;br /&gt;
 | nion&lt;br /&gt;
 | Martin K. (2009), &lt;br /&gt;
 | [[Ckurs2009/Arrayuebergabe/Musterlösung | Arrayuebergabe]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Studentendatenbank | Studentendatenbank]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4. VL&lt;br /&gt;
 | struct, Pointer, Arrays&lt;br /&gt;
 | AlexanderK&lt;br /&gt;
 |&lt;br /&gt;
 | [[Ckurs2009/Studentendatenbank/Musterlösung | Studentendatenbank]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Sammelbestellung | Sammelbestellung]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2-5&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4. VL&lt;br /&gt;
 | Listen, Pointer, Speicherverwaltung&lt;br /&gt;
 | Florian S.&lt;br /&gt;
 | [[Benutzer:Mario|Mario]] (2009), &lt;br /&gt;
 |  [[Ckurs2009/Sammelbestellung/Musterlösung | Sammelbestellung]] &lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Zahlen_sagen | Zahlen sagen]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4. VL&lt;br /&gt;
 | Umgang mit Zeichenketten&lt;br /&gt;
 | Martin K.&lt;br /&gt;
 | Paul B. (w.i.p.)&lt;br /&gt;
 | [[Ckurs2009/Zahlen_sagen/Musterlösung | Zahlen sagen]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Compiler, Präprozessor, Header Files | Compiler, Präprozessor, Header Files]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5. VL&lt;br /&gt;
 | Arbeiten mit mehreren Quellcode-Dateien, Kompilieren und Linken, Header-Dateien und #include, debugging-Makro verwenden&lt;br /&gt;
 | Katrin&lt;br /&gt;
 | AndyF (2010)&lt;br /&gt;
 | [https://wiki.freitagsrunde.org/Ckurs2009/Vortrag05 siehe Folien]&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Bus Error | Bus Error]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |8&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5. VL&lt;br /&gt;
 | Pointer, wie entsteht ein bus error&lt;br /&gt;
 | Katrin&lt;br /&gt;
 | [[Benutzer:Mario|Mario]] (2010)&lt;br /&gt;
 | [[Ckurs2009/Bus Error/Musterlösung | Bus Error]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/BubbleSortDebug | BubbleSort Debugging]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |6. VL&lt;br /&gt;
 | Debuggen eines Programmes mit gdb&lt;br /&gt;
 | aeichner&lt;br /&gt;
 |&lt;br /&gt;
 | [[Ckurs2009/BubbleSortDebug/Musterlösung | BubbleSort Debugging]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Debug | Debugging]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |1-8&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |6. VL&lt;br /&gt;
 | Debuggen einer Anwendung nach Wahl&lt;br /&gt;
 | aeichner&lt;br /&gt;
 |&lt;br /&gt;
 | &lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Code Layout | Code Layout]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |7. VL&lt;br /&gt;
 | Kleinere Codeschipsel mit kleinen Unsauberkeiten&lt;br /&gt;
 | Daniel&lt;br /&gt;
 | [[Benutzer:Tkroenert|TKroenert]] (2010)&lt;br /&gt;
 | [[Ckurs2009/Code Layout/Musterlösung | Code Layout]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Refactoring | Refactoring]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5-9&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |7. VL&lt;br /&gt;
 | Wie verbessere ich den Quellcode eines Programmes.&lt;br /&gt;
 | Daniel&lt;br /&gt;
 | &lt;br /&gt;
 | [[Ckurs2009/Refactoring/Musterlösung | Refactoring]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Cat | Cat]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |6&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2. VL&lt;br /&gt;
 | Arbeiten mit Dateien&amp;lt;br&amp;gt;Kommandozeilenparameter&lt;br /&gt;
 | nion&lt;br /&gt;
 | sping (2009), &lt;br /&gt;
 | vorhanden&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Pong | Pong]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |7&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |9.VL (eigentlich 2.VL)&lt;br /&gt;
 | allgemeiner Programmablauf, fortgeschrittene Konsolenausgaben/eingaben&lt;br /&gt;
 | AlexanderK&lt;br /&gt;
 |&lt;br /&gt;
 | vorhanden &lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Buchhaltung | Buchhaltung]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |6&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5.VL&lt;br /&gt;
 | Lesen aus Dateien&lt;br /&gt;
 | reiner&lt;br /&gt;
 | AndyF (2010)&lt;br /&gt;
 | &lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/StringArraySortieren | StringArraySortieren]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |8&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Konsolparameter, Funktionspointer, stdlib&lt;br /&gt;
 | reiner&lt;br /&gt;
 |&lt;br /&gt;
 | vorhanden&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs/integral | integral]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Funktionspointer&lt;br /&gt;
 | reiner&lt;br /&gt;
 | [[Benutzer:Tkroenert|TKroenert]] (2010)&lt;br /&gt;
 | [[Ckurs/integral/Musterlösung | Musterloesung]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs/forschleife | forschleife]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |6. VL&lt;br /&gt;
 | Bug (zum Knobeln)&lt;br /&gt;
 | reiner&lt;br /&gt;
 | nion (2009), [[Benutzer:Tkroenert|TKroenert]] (2010)&lt;br /&gt;
 | vorhanden&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs/libgdsl | GDSL]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5-7&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |9. VL&lt;br /&gt;
 | Anwendung der Generic Data Structures Library&lt;br /&gt;
 | martin&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/StdLib | Standard C Library]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |9. VL&lt;br /&gt;
 | Recherche in der Standard C Bibliothek&lt;br /&gt;
 | martin&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Kleine und große Probleme ==&lt;br /&gt;
&lt;br /&gt;
* Die Tubit-Accounts haben nicht /bin/bash als shell, so dass die &amp;lt;strong&amp;gt;Cursortasten&amp;lt;/strong&amp;gt; nicht funktionieren. Workaround: als erstes Kommando 'bash' eingeben, man sieht dann auch in welchem Verzeichnis man gerade ist.&lt;br /&gt;
* wenn man nur den Promt 'bash-0.12' oder so erhält, also ohne das Verzeichnis in dem man ist, folgendes Kommando eingeben: &amp;lt;tt&amp;gt;export PS1='\u@\h:\w$ '&amp;lt;/tt&amp;gt; oder zum dauerhaften Speichern: &amp;lt;tt&amp;gt; echo &amp;quot;export PS1='\u@\h:\w$ '&amp;quot; &amp;gt;&amp;gt; ~/.bashrc &amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Musterlösungen ==&lt;br /&gt;
Die Lösungen zu den Aufgaben werden nach den jeweiligen Übungen hier veröffentlicht. Falls dies nicht geschieht, bitte den zuständigen Tutor fragen.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[Ckurs2009/Feedback|Feedback zum Kurs 2009]]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:CKurs]]&lt;br /&gt;
[[Kategorie:CKurs Aufgaben]]&lt;/div&gt;</summary>
		<author><name>P.brodmann</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=C-Kurs/Rekursives_arbeiten&amp;diff=14756</id>
		<title>C-Kurs/Rekursives arbeiten</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=C-Kurs/Rekursives_arbeiten&amp;diff=14756"/>
		<updated>2010-09-04T11:24:29Z</updated>

		<summary type="html">&lt;p&gt;P.brodmann: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Aufgabe==&lt;br /&gt;
Mit den beiden Funktionen succ() und neg() ist es möglich alle bekannten Operationen zu erstellen.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Die Funktion succ() liefert den Nachfolger einer übergebenen Zahl.&amp;lt;br&amp;gt;&lt;br /&gt;
* neg() dreht das Vorzeichen eines übergebenen Wertes um.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Im unten angegebenen Quelltext seht ihr die Funktionen add(), sub(), mult(), div(), mod() und pot(), die ihr aus succ() und neg() nachbilden sollt.&lt;br /&gt;
Dafür könnt ihr mit Variablen, Schleifen/Rekursion, Fallunterscheidungen und natürlich Funktionen arbeiten.&lt;br /&gt;
Verwendet bitte keine Operatoren, die bereits in C definiert sind - sonst wird's langweilig ;)&lt;br /&gt;
&lt;br /&gt;
Wenn ihr Lust habt, könnt ihr euch noch weitere Funktionen überlegen, die ihr aus succ und neg aufbauen könnt.&lt;br /&gt;
==Vorgabe==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 * Gibt Nachfolger des uebergebenen Wertes zurueck&lt;br /&gt;
 */&lt;br /&gt;
int succ(int x){&lt;br /&gt;
	return ++x;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 * Gibt den inversen Wert eines uebergebenen Wertes zurueck&lt;br /&gt;
 */&lt;br /&gt;
int neg(int x){&lt;br /&gt;
	return -x;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*--------------Ab hier durch C-Kurs Teilnehmer -----------------------*/&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 * Addition zweier Zahlen&lt;br /&gt;
 */&lt;br /&gt;
int add(int x, int y){	&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 * Subtraktion&lt;br /&gt;
 */&lt;br /&gt;
int sub(int x, int y){&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 * Multiplikation&lt;br /&gt;
 */&lt;br /&gt;
int mult(int x, int y){&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 * Division&lt;br /&gt;
 */&lt;br /&gt;
int div(int x, int y){&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 * Modulo&lt;br /&gt;
 */&lt;br /&gt;
int mod(int x, int y){&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 * Potenziert eine angegebene Zahl mit dem angegebenen Exponenten&lt;br /&gt;
 */&lt;br /&gt;
int pot(int x, int y){&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int main(){&lt;br /&gt;
	printf(&amp;quot;add(-3,-7)  = %i\n&amp;quot;, add(-3,-7));&lt;br /&gt;
	printf(&amp;quot;sub(-3,7)   = %i\n&amp;quot;, sub(-3,7));&lt;br /&gt;
	printf(&amp;quot;mult(-3,-7) = %i\n&amp;quot;, mult(-3,-7));&lt;br /&gt;
	printf(&amp;quot;div(21,-7) = %i\n&amp;quot;, div(21,-7));&lt;br /&gt;
	printf(&amp;quot;mod(21,8)   = %i\n&amp;quot;, mod(21,8));&lt;br /&gt;
	printf(&amp;quot;pot(-7,3)   = %i\n&amp;quot;, pot(-7,3));&lt;br /&gt;
		   &lt;br /&gt;
	return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>P.brodmann</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=C-Kurs/Rekursives_arbeiten/Musterl%C3%B6sung&amp;diff=14755</id>
		<title>C-Kurs/Rekursives arbeiten/Musterlösung</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=C-Kurs/Rekursives_arbeiten/Musterl%C3%B6sung&amp;diff=14755"/>
		<updated>2010-09-04T11:23:42Z</updated>

		<summary type="html">&lt;p&gt;P.brodmann: &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;
&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 * Gibt Nachfolger des uebergebenen Wertes zurueck&lt;br /&gt;
 */&lt;br /&gt;
int succ(int x){&lt;br /&gt;
	return ++x;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 * Gibt den inversen Wert eines uebergebenen Wertes zurueck&lt;br /&gt;
 */&lt;br /&gt;
int neg(int x){&lt;br /&gt;
	return -x;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//--------------Ab hier durch C-Kurs Teilnehmer -----------------------&lt;br /&gt;
/*&lt;br /&gt;
 * Gibt den Vorgaenger des uebergebenen Wertes zurueck&lt;br /&gt;
 */&lt;br /&gt;
int pred(int x){&lt;br /&gt;
	return neg(succ(neg(x)));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 * Addition zweier Zahlen&lt;br /&gt;
 */&lt;br /&gt;
int add(int x, int y){&lt;br /&gt;
	if (y == 0) {&lt;br /&gt;
		return x;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	if (x &amp;lt; 0 &amp;amp;&amp;amp; y &amp;lt; 0) {&lt;br /&gt;
		return neg(add(neg(x), neg(y)));&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	if (y &amp;lt; 0) {&lt;br /&gt;
		return add(y, x);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	return add(succ(x), pred(y));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 * Subtraktion&lt;br /&gt;
 */&lt;br /&gt;
int sub(int x, int y){&lt;br /&gt;
	return add(x, neg(y));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 * Multiplikation&lt;br /&gt;
 */&lt;br /&gt;
int mult(int x, int y){&lt;br /&gt;
	int inv = 0;&lt;br /&gt;
&lt;br /&gt;
	if (x == 0 || y == 0) {&lt;br /&gt;
		return 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	if (x &amp;lt; 0) {&lt;br /&gt;
		x = neg(x);&lt;br /&gt;
		inv = !inv;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	if (y &amp;lt; 0) {&lt;br /&gt;
		y = neg(y);&lt;br /&gt;
		inv = !inv;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	if (inv) {&lt;br /&gt;
		return neg(add(x, mult(x, pred(y))));&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	return add(x, mult(x, pred(y)));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 * Division&lt;br /&gt;
 */&lt;br /&gt;
int div(int x, int y){&lt;br /&gt;
	int inv = 0;&lt;br /&gt;
	if (y == 0) {&lt;br /&gt;
		//undefiniert!!!&lt;br /&gt;
		return 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	if (x == 0) {&lt;br /&gt;
		return 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	if (x &amp;lt; 0) {&lt;br /&gt;
		x = neg(x);&lt;br /&gt;
		inv = !inv;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	if (y &amp;lt; 0) {&lt;br /&gt;
		y = neg(y);&lt;br /&gt;
		inv = !inv;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	if (x &amp;lt; y) {&lt;br /&gt;
		return 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	if (inv) {&lt;br /&gt;
		return neg(succ(div(sub(x, y), y)));&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	return succ(div(sub(x, y), y));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 * Modulo&lt;br /&gt;
 */&lt;br /&gt;
int mod(int x, int y){&lt;br /&gt;
	if (y == 0) {&lt;br /&gt;
		//undefiniert!!!&lt;br /&gt;
		return 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	if (x == 0) {&lt;br /&gt;
		return 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	if (y &amp;lt; 0) {&lt;br /&gt;
		y = neg(y);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	if (x &amp;lt; 0) {&lt;br /&gt;
		return neg(mod(neg(x),y));&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	if (x &amp;lt; y) {&lt;br /&gt;
		return x;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	return mod(sub(x,y),y);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 * Potenziert eine angegebene Zahl mit dem angegebenen Exponenten&lt;br /&gt;
 */&lt;br /&gt;
int pot(int x, int y){&lt;br /&gt;
	if (y == 1) {&lt;br /&gt;
		return x;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	if (y &amp;lt; 0) {&lt;br /&gt;
		return 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	return mult(x,pot(x,pred(y)));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int main(){&lt;br /&gt;
	printf(&amp;quot;add(-3,-7)  = %i\n&amp;quot;, add(-3,-7));&lt;br /&gt;
	printf(&amp;quot;sub(-3,7)   = %i\n&amp;quot;, sub(-3,7));&lt;br /&gt;
	printf(&amp;quot;mult(-3,-7) = %i\n&amp;quot;, mult(-3,-7));&lt;br /&gt;
	printf(&amp;quot;div(21,-7) = %i\n&amp;quot;, div(21,-7));&lt;br /&gt;
	printf(&amp;quot;mod(21,8)   = %i\n&amp;quot;, mod(21,8));&lt;br /&gt;
	printf(&amp;quot;pot(-7,3)   = %i\n&amp;quot;, pot(-7,3));&lt;br /&gt;
&lt;br /&gt;
	return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>P.brodmann</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=C-Kurs/Rekursives_arbeiten/Musterl%C3%B6sung&amp;diff=14754</id>
		<title>C-Kurs/Rekursives arbeiten/Musterlösung</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=C-Kurs/Rekursives_arbeiten/Musterl%C3%B6sung&amp;diff=14754"/>
		<updated>2010-09-04T11:21:50Z</updated>

		<summary type="html">&lt;p&gt;P.brodmann: CKURS Review Formatierung+ ausgabe+ C Stadard + include&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;
&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 * Gibt Nachfolger des uebergebenen Wertes zurueck&lt;br /&gt;
 */&lt;br /&gt;
int succ(int x){&lt;br /&gt;
	return ++x;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 * Gibt den inversen Wert eines uebergebenen Wertes zurueck&lt;br /&gt;
 */&lt;br /&gt;
int neg(int x){&lt;br /&gt;
	return -x;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*--------------Ab hier durch C-Kurs Teilnehmer ----------------------- */&lt;br /&gt;
/*&lt;br /&gt;
 * Gibt den Vorgaenger des uebergebenen Wertes zurueck&lt;br /&gt;
 */&lt;br /&gt;
int pred(int x){&lt;br /&gt;
	return neg(succ(neg(x)));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 * Addition zweier Zahlen&lt;br /&gt;
 */&lt;br /&gt;
int add(int x, int y){&lt;br /&gt;
	if (y == 0) {&lt;br /&gt;
		return x;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	if (x &amp;lt; 0 &amp;amp;&amp;amp; y &amp;lt; 0) {&lt;br /&gt;
		return neg(add(neg(x), neg(y)));&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	if (y &amp;lt; 0) {&lt;br /&gt;
		return add(y, x);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	return add(succ(x), pred(y));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 * Subtraktion&lt;br /&gt;
 */&lt;br /&gt;
int sub(int x, int y){&lt;br /&gt;
	return add(x, neg(y));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 * Multiplikation&lt;br /&gt;
 */&lt;br /&gt;
int mult(int x, int y){&lt;br /&gt;
	int inv = 0;&lt;br /&gt;
&lt;br /&gt;
	if (x == 0 || y == 0) {&lt;br /&gt;
		return 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	if (x &amp;lt; 0) {&lt;br /&gt;
		x = neg(x);&lt;br /&gt;
		inv = !inv;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	if (y &amp;lt; 0) {&lt;br /&gt;
		y = neg(y);&lt;br /&gt;
		inv = !inv;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	if (inv) {&lt;br /&gt;
		return neg(add(x, mult(x, pred(y))));&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	return add(x, mult(x, pred(y)));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 * Division&lt;br /&gt;
 */&lt;br /&gt;
int divi(int x, int y){&lt;br /&gt;
	int inv = 0;&lt;br /&gt;
	if (y == 0) {&lt;br /&gt;
		//undefiniert!!!&lt;br /&gt;
		return 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	if (x == 0) {&lt;br /&gt;
		return 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	if (x &amp;lt; 0) {&lt;br /&gt;
		x = neg(x);&lt;br /&gt;
		inv = !inv;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	if (y &amp;lt; 0) {&lt;br /&gt;
		y = neg(y);&lt;br /&gt;
		inv = !inv;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	if (x &amp;lt; y) {&lt;br /&gt;
		return 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	if (inv) {&lt;br /&gt;
		return neg(succ(divi(sub(x, y), y)));&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	return succ(divi(sub(x, y), y));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 * Modulo&lt;br /&gt;
 */&lt;br /&gt;
int mod(int x, int y){&lt;br /&gt;
	if (y == 0) {&lt;br /&gt;
		//undefiniert!!!&lt;br /&gt;
		return 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	if (x == 0) {&lt;br /&gt;
		return 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	if (y &amp;lt; 0) {&lt;br /&gt;
		y = neg(y);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	if (x &amp;lt; 0) {&lt;br /&gt;
		return neg(mod(neg(x),y));&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	if (x &amp;lt; y) {&lt;br /&gt;
		return x;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	return mod(sub(x,y),y);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 * Potenziert eine angegebene Zahl mit dem angegebenen Exponenten&lt;br /&gt;
 */&lt;br /&gt;
int pot(int x, int y){&lt;br /&gt;
	if (y == 1) {&lt;br /&gt;
		return x;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	if (y &amp;lt; 0) {&lt;br /&gt;
		return 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	return mult(x,pot(x,pred(y)));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int main(){&lt;br /&gt;
	printf(&amp;quot;add(-3,-7)  = %i\n&amp;quot;, add(-3,-7));&lt;br /&gt;
	printf(&amp;quot;sub(-3,7)   = %i\n&amp;quot;, sub(-3,7));&lt;br /&gt;
	printf(&amp;quot;mult(-3,-7) = %i\n&amp;quot;, mult(-3,-7));&lt;br /&gt;
	printf(&amp;quot;divi(21,-7) = %i\n&amp;quot;, divi(21,-7));&lt;br /&gt;
	printf(&amp;quot;mod(21,8)   = %i\n&amp;quot;, mod(21,8));&lt;br /&gt;
	printf(&amp;quot;pot(-7,3)   = %i\n&amp;quot;, pot(-7,3));&lt;br /&gt;
&lt;br /&gt;
	return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>P.brodmann</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=C-Kurs/%C3%9Cbungsaufgaben&amp;diff=14753</id>
		<title>C-Kurs/Übungsaufgaben</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=C-Kurs/%C3%9Cbungsaufgaben&amp;diff=14753"/>
		<updated>2010-09-04T11:15:40Z</updated>

		<summary type="html">&lt;p&gt;P.brodmann: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Wir haben jeder Aufgabe eine Einschätzung ihrer Schwierigkeit auf einer Skala von 1 bis 10 vorangestellt. Bei dieser Einschätzung sind wir von einem Gehirn ausgegangen, für welches das jeweilige Themengebiet völlig neu ist, das jedoch schon ein ganz gutes Verständnis dafür hat wie eine Programmiersprache denn so funktioniert. &lt;br /&gt;
Entsprechend kann eine schwer bewertete Aufgabe aus einem frühen Themengebiet für manch einen sehr einfach oder eine leicht bewertete aus einem späten Themengebiet für einen anderen sehr schwer sein. Es ist nur ein Wert, der euch helfen soll eure nächste Aufgabe zu wählen. &lt;br /&gt;
&lt;br /&gt;
Falls ihr Anmerkungen zu den Aufgaben habt, könnt ihr die Diskussionsseiten der jeweiligen Aufgaben nutzen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Schwierigkeitsgrade ==&lt;br /&gt;
&lt;br /&gt;
#  Reines Tutorial. Man muss nicht viel selbst denken&lt;br /&gt;
#  ...&lt;br /&gt;
#  Leichte Übungsaufgabe. Studies, die noch eher unsicher sind werden hier gut begleitet.&lt;br /&gt;
#  ...&lt;br /&gt;
#  Typische Aufgabe. Man muss den Kopf benutzen, bekommt an schwierigen Stellen aber Hilfestellungen.&lt;br /&gt;
#  ...&lt;br /&gt;
#  Herausfordernd, eher etwas für Studies die etwas fitter sind.&lt;br /&gt;
#  ...&lt;br /&gt;
#  Auch erfahrene Programmierer werden hier ein bis zwei Übungen beschäftigt sein&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
#  Tja, die Idee war da. Wir finden sie auch gut, aber es könnte wirklich anstrengend werden.&lt;br /&gt;
&lt;br /&gt;
== Die Aufgaben ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;2&amp;quot;&lt;br /&gt;
 |- bgcolor=&amp;quot;#D8D8D8&amp;quot;&lt;br /&gt;
 !Aufgabe&lt;br /&gt;
 !Schwierigkeit&lt;br /&gt;
 !Vorwissen&lt;br /&gt;
 !Lerneffekte&lt;br /&gt;
 !Bearbeiter&lt;br /&gt;
 !Korrektur gelesen&lt;br /&gt;
 !Musterlösung&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Von der Konsole zum HelloWorld | Von der Konsole zum HelloWorld]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |1&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |1. VL&lt;br /&gt;
 | Konsole benutzen, Hello World&lt;br /&gt;
 | Sebastian D.&lt;br /&gt;
 | [[Benutzer:Mario|Mario]] (2009), &lt;br /&gt;
 | &lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Fakultät | Fakultät]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |1. VL&lt;br /&gt;
 | Schleifen&lt;br /&gt;
 | Sebastian D.&lt;br /&gt;
 | Daniel (2009), &lt;br /&gt;
 |  &lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Fibonacci-Folge|Fibonacci-Folge]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |1. VL&lt;br /&gt;
 | Funktionen &amp;lt;br&amp;gt; Rekursion&lt;br /&gt;
 | Paul B.&lt;br /&gt;
 |&lt;br /&gt;
 | [[Ckurs2009/Fibonacci-Folge/Musterlösung | Fibonacci-Folge]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/digitalesSchloesserKnacken|digitales Schloesser knacken]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2-4&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |1. VL&lt;br /&gt;
 | Kontrollstrukturen &amp;lt;br&amp;gt;Bitweise Operatoren&lt;br /&gt;
 | Paul B.&lt;br /&gt;
 |&lt;br /&gt;
 | [[Ckurs2009/digitalesSchloesserKnacken/Musterlösung | digitales Schloesser knacken]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Rekursives_arbeiten|Rekursives Arbeiten]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3-5&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |1. VL&lt;br /&gt;
 | Bekannte Operatoren wie + durch Funktionen succ und neg nachbilden&lt;br /&gt;
 | Eugen R.&lt;br /&gt;
 | Paul B.(2010)&lt;br /&gt;
 | [[Ckurs2009/Rekursives_arbeiten/Musterlösung | Rekursives Arbeiten]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Base64 | Base64]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |6&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |1. VL&lt;br /&gt;
 | Operatoren&lt;br /&gt;
 | Sebastian D.&lt;br /&gt;
 | Paul B.(2010)&lt;br /&gt;
 | [[Ckurs2009/Base64/Musterlösung | Base64]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/EingabeAusgabe | Ein- und Ausgabe]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |1&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2. VL&lt;br /&gt;
 | Einlesen von Benutzereingaben&amp;lt;br&amp;gt;Ausgabe derselben&lt;br /&gt;
 | [[Benutzer:Mario|Mario]]&lt;br /&gt;
 | nion (2009), &lt;br /&gt;
 | [[Ckurs2009/EingabeAusgabe/Musterlösung | Ein- und Ausgabe]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Taschenrechner | Taschenrechner]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2. VL&lt;br /&gt;
 | Eingabe+Ausgabe&amp;lt;br&amp;gt;Mathematische Operatoren&lt;br /&gt;
 | [[Benutzer:Mario|Mario]]&lt;br /&gt;
 | [[Benutzer:Tkroenert|TKroenert]] (2009), &lt;br /&gt;
 | [[Ckurs2009/Taschenrechner/Musterlösung | Taschenrechner]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/VerschachtelteSchleifen | Verschachtelte Schleifen]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2. VL&lt;br /&gt;
 | Umgang mit mehreren verschachtelten Schleifen&lt;br /&gt;
 | [[Benutzer:Dank|Daniel K.]]&lt;br /&gt;
 | AlexanderK (2009), &lt;br /&gt;
 |&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Glückspiel | Glücksspiel]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2. VL&lt;br /&gt;
 | Anwenden von Fallunterscheidungen und Einlesen von Werten aus der Konsole&lt;br /&gt;
 | [[Benutzer:Dank|Daniel K.]]&lt;br /&gt;
 | AlexanderK (2009), &lt;br /&gt;
 | [[Ckurs2009/Glückspiel/Musterlösung | Glückspiel]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Wochentag | Wochentagsrechnung]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2. VL&lt;br /&gt;
 | Einlesen von Benutzereingaben&amp;lt;br&amp;gt;Mathematikverständniss&lt;br /&gt;
 | [[Benutzer:Mario|Mario]]&lt;br /&gt;
 | nion (Musterlösung noch nicht vorhanden)  (2009), &lt;br /&gt;
 | &lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Taschenrechner2.0 | Taschenrechner ''2.0'']]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |8&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2. VL&lt;br /&gt;
 | Knobeln&amp;lt;br&amp;gt;Komplexes Aufgaben lösen&lt;br /&gt;
 | [[Benutzer:Mario|Mario]]&lt;br /&gt;
 | Martin K. (2009), &lt;br /&gt;
 | [[Ckurs2009/Taschenrechner2.0/Musterlösung | Taschenrechner ''2.0'']]&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Call by reference | Call by reference]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Einfache Anwendung von &amp;amp;/*&lt;br /&gt;
 | sping&lt;br /&gt;
 | nion (2009), &lt;br /&gt;
 | [[Ckurs2009/Call by reference/Musterlösung | Call by reference]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2010/String to Double | String to Double]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Original-Dokumentation anwenden (Opengroup, man pages)&amp;lt;br&amp;gt;Pointer auf Pointer&amp;lt;br&amp;gt;Const correctness&amp;lt;br&amp;gt;Strings&lt;br /&gt;
 | sping&lt;br /&gt;
 |&lt;br /&gt;
 | vorhanden&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Text processing | Text processing]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4, 6&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Strings&amp;lt;br&amp;gt;Pointer-Arithmetik&amp;lt;br&amp;gt;Pointer auf Pointer&amp;lt;br&amp;gt;Refactoring&lt;br /&gt;
 | sping&lt;br /&gt;
 | [[Benutzer:Mario|Mario]] (2009), &lt;br /&gt;
 | [[Ckurs2009/Text processing/Musterlösung | Text processing]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Palindrome | Palindrome]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Pointer und Strings&lt;br /&gt;
 | [[Benutzer:Dank|Daniel K.]]&lt;br /&gt;
 | nion (2009), &lt;br /&gt;
 | [[Ckurs2009/Palindrome/Musterlösung | Palindrome ]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/(Pointer) Swapping | (Pointer) Swapping]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Pointer und Arrays benutzen, generisches swap&lt;br /&gt;
 | Katrin&lt;br /&gt;
 |&lt;br /&gt;
 | [[Ckurs2009/(Pointer) Swapping/Musterlösung | (Pointer) Swapping]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Matrizenmultiplikation | Matrizenmultiplikation]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |6&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Mehrdimensionale Arrays&amp;lt;br&amp;gt;const correctness&lt;br /&gt;
 | sping&lt;br /&gt;
 | [[Benutzer:Mario|Mario]] (2009), &lt;br /&gt;
 | [[Ckurs2009/Matrizenmultiplikation/Musterlösung | Matrizenmultiplikation]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs/DreiD | 3D mit C]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5-9&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Mathematische Rechenoperationen, Algorithmik&lt;br /&gt;
 | AndreasF&lt;br /&gt;
 | &lt;br /&gt;
 | vorhanden&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Arrayuebergabe | Arrayuebergabe]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4/5&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4. VL&lt;br /&gt;
 | Einlesen von Benutzereingaben&amp;lt;br&amp;gt;Pointer und Pointerarithmetik&lt;br /&gt;
 | nion&lt;br /&gt;
 | Martin K. (2009), &lt;br /&gt;
 | [[Ckurs2009/Arrayuebergabe/Musterlösung | Arrayuebergabe]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Studentendatenbank | Studentendatenbank]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4. VL&lt;br /&gt;
 | struct, Pointer, Arrays&lt;br /&gt;
 | AlexanderK&lt;br /&gt;
 |&lt;br /&gt;
 | [[Ckurs2009/Studentendatenbank/Musterlösung | Studentendatenbank]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Sammelbestellung | Sammelbestellung]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2-5&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4. VL&lt;br /&gt;
 | Listen, Pointer, Speicherverwaltung&lt;br /&gt;
 | Florian S.&lt;br /&gt;
 | [[Benutzer:Mario|Mario]] (2009), &lt;br /&gt;
 |  [[Ckurs2009/Sammelbestellung/Musterlösung | Sammelbestellung]] &lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Zahlen_sagen | Zahlen sagen]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4. VL&lt;br /&gt;
 | Umgang mit Zeichenketten&lt;br /&gt;
 | Martin K.&lt;br /&gt;
 | &lt;br /&gt;
 | [[Ckurs2009/Zahlen_sagen/Musterlösung | Zahlen sagen]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Compiler, Präprozessor, Header Files | Compiler, Präprozessor, Header Files]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5. VL&lt;br /&gt;
 | Arbeiten mit mehreren Quellcode-Dateien, Kompilieren und Linken, Header-Dateien und #include, debugging-Makro verwenden&lt;br /&gt;
 | Katrin&lt;br /&gt;
 | AndyF (grad_dabei)&lt;br /&gt;
 | [https://wiki.freitagsrunde.org/Ckurs2009/Vortrag05 siehe Folien]&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Bus Error | Bus Error]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |8&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5. VL&lt;br /&gt;
 | Pointer, wie entsteht ein bus error&lt;br /&gt;
 | Katrin&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/BubbleSortDebug | BubbleSort Debugging]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |6. VL&lt;br /&gt;
 | Debuggen eines Programmes mit gdb&lt;br /&gt;
 | aeichner&lt;br /&gt;
 |&lt;br /&gt;
 | [[Ckurs2009/BubbleSortDebug/Musterlösung | BubbleSort Debugging]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Debug | Debugging]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |1-8&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |6. VL&lt;br /&gt;
 | Debuggen einer Anwendung nach Wahl&lt;br /&gt;
 | aeichner&lt;br /&gt;
 |&lt;br /&gt;
 | &lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Code Layout | Code Layout]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |7. VL&lt;br /&gt;
 | Kleinere Codeschipsel mit kleinen Unsauberkeiten&lt;br /&gt;
 | Daniel&lt;br /&gt;
 | [[Benutzer:Tkroenert|TKroenert]] (2010)&lt;br /&gt;
 | [[Ckurs2009/Code Layout/Musterlösung | Code Layout]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Refactoring | Refactoring]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5-9&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |7. VL&lt;br /&gt;
 | Wie verbessere ich den Quellcode eines Programmes.&lt;br /&gt;
 | Daniel&lt;br /&gt;
 | &lt;br /&gt;
 | [[Ckurs2009/Refactoring/Musterlösung | Refactoring]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Cat | Cat]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |6&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2. VL&lt;br /&gt;
 | Arbeiten mit Dateien&amp;lt;br&amp;gt;Kommandozeilenparameter&lt;br /&gt;
 | nion&lt;br /&gt;
 | sping (2009), &lt;br /&gt;
 | vorhanden&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Pong | Pong]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |7&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |9.VL (eigentlich 2.VL)&lt;br /&gt;
 | allgemeiner Programmablauf, fortgeschrittene Konsolenausgaben/eingaben&lt;br /&gt;
 | AlexanderK&lt;br /&gt;
 |&lt;br /&gt;
 | vorhanden &lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Buchhaltung | Buchhaltung]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |6&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5.VL&lt;br /&gt;
 | Lesen aus Dateien&lt;br /&gt;
 | reiner&lt;br /&gt;
 | AndyF (grad_dabei)&lt;br /&gt;
 | &lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/StringArraySortieren | StringArraySortieren]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |8&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Konsolparameter, Funktionspointer, stdlib&lt;br /&gt;
 | reiner&lt;br /&gt;
 |&lt;br /&gt;
 | vorhanden&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs/integral | integral]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Funktionspointer&lt;br /&gt;
 | reiner&lt;br /&gt;
 | [[Benutzer:Tkroenert|TKroenert]] (2010)&lt;br /&gt;
 | [[Ckurs/integral/Musterlösung | Musterloesung]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs/forschleife | forschleife]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |6. VL&lt;br /&gt;
 | Bug (zum Knobeln)&lt;br /&gt;
 | reiner&lt;br /&gt;
 | nion (2009), [[Benutzer:Tkroenert|TKroenert]] (2010)&lt;br /&gt;
 | vorhanden&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs/libgdsl | GDSL]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5-7&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |9. VL&lt;br /&gt;
 | Anwendung der Generic Data Structures Library&lt;br /&gt;
 | martin&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/StdLib | Standard C Library]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |9. VL&lt;br /&gt;
 | Recherche in der Standard C Bibliothek&lt;br /&gt;
 | martin&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Kleine und große Probleme ==&lt;br /&gt;
&lt;br /&gt;
* Die Tubit-Accounts haben nicht /bin/bash als shell, so dass die &amp;lt;strong&amp;gt;Cursortasten&amp;lt;/strong&amp;gt; nicht funktionieren. Workaround: als erstes Kommando 'bash' eingeben, man sieht dann auch in welchem Verzeichnis man gerade ist.&lt;br /&gt;
* wenn man nur den Promt 'bash-0.12' oder so erhält, also ohne das Verzeichnis in dem man ist, folgendes Kommando eingeben: &amp;lt;tt&amp;gt;export PS1='\u@\h:\w$ '&amp;lt;/tt&amp;gt; oder zum dauerhaften Speichern: &amp;lt;tt&amp;gt; echo &amp;quot;export PS1='\u@\h:\w$ '&amp;quot; &amp;gt;&amp;gt; ~/.bashrc &amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Musterlösungen ==&lt;br /&gt;
Die Lösungen zu den Aufgaben werden nach den jeweiligen Übungen hier veröffentlicht. Falls dies nicht geschieht, bitte den zuständigen Tutor fragen.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[Ckurs2009/Feedback|Feedback zum Kurs 2009]]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:CKurs]]&lt;br /&gt;
[[Kategorie:CKurs Aufgaben]]&lt;/div&gt;</summary>
		<author><name>P.brodmann</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=C-Kurs/Rekursives_arbeiten&amp;diff=14752</id>
		<title>C-Kurs/Rekursives arbeiten</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=C-Kurs/Rekursives_arbeiten&amp;diff=14752"/>
		<updated>2010-09-04T11:13:47Z</updated>

		<summary type="html">&lt;p&gt;P.brodmann: CKURS Review Formatierung+ C Stadard + include&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Aufgabe==&lt;br /&gt;
Mit den beiden Funktionen succ() und neg() ist es möglich alle bekannten Operationen zu erstellen.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Die Funktion succ() liefert den Nachfolger einer übergebenen Zahl.&amp;lt;br&amp;gt;&lt;br /&gt;
* neg() dreht das Vorzeichen eines übergebenen Wertes um.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Im unten angegebenen Quelltext seht ihr die Funktionen add(), sub(), mult(), divi(), mod() und pot(), die ihr aus succ() und neg() nachbilden sollt.&lt;br /&gt;
Dafür könnt ihr mit Variablen, Schleifen/Rekursion, Fallunterscheidungen und natürlich Funktionen arbeiten.&lt;br /&gt;
Verwendet bitte keine Operatoren, die bereits in C definiert sind - sonst wird's langweilig ;)&lt;br /&gt;
&lt;br /&gt;
Wenn ihr Lust habt, könnt ihr euch noch weitere Funktionen überlegen, die ihr aus succ und neg aufbauen könnt.&lt;br /&gt;
==Vorgabe==&lt;br /&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;
&lt;br /&gt;
/*&lt;br /&gt;
 * Gibt Nachfolger des uebergebenen Wertes zurueck&lt;br /&gt;
 */&lt;br /&gt;
int succ(int x){&lt;br /&gt;
	return ++x;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 * Gibt den inversen Wert eines uebergebenen Wertes zurueck&lt;br /&gt;
 */&lt;br /&gt;
int neg(int x){&lt;br /&gt;
	return -x;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*--------------Ab hier durch C-Kurs Teilnehmer -----------------------*/&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 * Addition zweier Zahlen&lt;br /&gt;
 */&lt;br /&gt;
int add(int x, int y){	&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 * Subtraktion&lt;br /&gt;
 */&lt;br /&gt;
int sub(int x, int y){&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 * Multiplikation&lt;br /&gt;
 */&lt;br /&gt;
int mult(int x, int y){&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 * Division&lt;br /&gt;
 */&lt;br /&gt;
int divi(int x, int y){&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 * Modulo&lt;br /&gt;
 */&lt;br /&gt;
int mod(int x, int y){&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 * Potenziert eine angegebene Zahl mit dem angegebenen Exponenten&lt;br /&gt;
 */&lt;br /&gt;
int pot(int x, int y){&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int main(){&lt;br /&gt;
	printf(&amp;quot;add(-3,-7)  = %i\n&amp;quot;, add(-3,-7));&lt;br /&gt;
	printf(&amp;quot;sub(-3,7)   = %i\n&amp;quot;, sub(-3,7));&lt;br /&gt;
	printf(&amp;quot;mult(-3,-7) = %i\n&amp;quot;, mult(-3,-7));&lt;br /&gt;
	printf(&amp;quot;divi(21,-7) = %i\n&amp;quot;, divi(21,-7));&lt;br /&gt;
	printf(&amp;quot;mod(21,8)   = %i\n&amp;quot;, mod(21,8));&lt;br /&gt;
	printf(&amp;quot;pot(-7,3)   = %i\n&amp;quot;, pot(-7,3));&lt;br /&gt;
		   &lt;br /&gt;
	return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>P.brodmann</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=C-Kurs/digitalesSchloesserKnacken/Musterl%C3%B6sung&amp;diff=14751</id>
		<title>C-Kurs/digitalesSchloesserKnacken/Musterlösung</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=C-Kurs/digitalesSchloesserKnacken/Musterl%C3%B6sung&amp;diff=14751"/>
		<updated>2010-09-04T10:43:42Z</updated>

		<summary type="html">&lt;p&gt;P.brodmann: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; #include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;time.h&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 unsigned int* abb;&lt;br /&gt;
 unsigned int versuche = 0;&lt;br /&gt;
 &lt;br /&gt;
 void generate(void);&lt;br /&gt;
 int test(unsigned int);&lt;br /&gt;
 char * toBin(unsigned int);&lt;br /&gt;
 unsigned int switchBit(int,int);&lt;br /&gt;
 &lt;br /&gt;
 int main (void)&lt;br /&gt;
 {&lt;br /&gt;
  generate();&lt;br /&gt;
  unsigned int key = 0;&lt;br /&gt;
  /* ab hier kannst du versuchen die Tuer mit deinem Schluessel zuknacken.&lt;br /&gt;
  veraendere die Variable Key dazu mit den dir bekannten bitweisen Operatoren&lt;br /&gt;
  die du in der Vorlesung kennengelernt hast.&lt;br /&gt;
  Du kannst deinen Schluessel dann mit der Funktion test() mit deinem Schluessel&lt;br /&gt;
  als Parameter testen.&lt;br /&gt;
  */&lt;br /&gt;
  int i = 0;&lt;br /&gt;
  for(; i &amp;lt; 32 ; i++){/* fuer jedes Bit wird geprueft ob es Richtig ist oder ob es getaucht werden muss*/&lt;br /&gt;
   int rigthBits  = test(key);/* Anzahl der richtigen Bits bevor das i-te Bit getauscht wurde*/&lt;br /&gt;
   int newRightBits = test(switchBit(key,i));/* Anzahl der richtigen Bits nachdem das i-te Bit getauscht wurde*/&lt;br /&gt;
   if(newRightBits &amp;gt; rigthBits)&lt;br /&gt;
    key=switchBit(key,i);/* wenn die Anzahl der richtigen Bits nach dem Tausch groeßer ist als vorher ist der Schluessel mit dem getauschten bit der Neue Schluessel*/&lt;br /&gt;
  }&lt;br /&gt;
 return 0;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 /*Diese Funktion vertaucht das in whichBit uebgebene Bit in dem uebergebenen Schluessel&lt;br /&gt;
 und liefert den so veraenderten Schluessel als Rueckgabewert*/&lt;br /&gt;
 unsigned int switchBit(int key , int whichBit)&lt;br /&gt;
 {&lt;br /&gt;
  return key ^ (1&amp;lt;&amp;lt;whichBit);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 /* diese Funktion liefert die Anzahl der Richtigen Bits im uebergebenen Schluessel zurueck.&lt;br /&gt;
 falls 32 zurueckgeliefert wird war der Schluessel richtig und die Tuer oeffnet sich.&lt;br /&gt;
 */&lt;br /&gt;
 int test(unsigned int toTest)&lt;br /&gt;
 {&lt;br /&gt;
 int rightBits = 0;&lt;br /&gt;
 int i = 0;&lt;br /&gt;
 for(; i&amp;lt; 32 ; i++){&lt;br /&gt;
  unsigned int x = 1 &amp;lt;&amp;lt; i;&lt;br /&gt;
  if(! ~((toTest &amp;amp; x) ^ (*abb| ~x))){&lt;br /&gt;
   rightBits++;&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
 if(rightBits == 32){&lt;br /&gt;
  printf (&amp;quot;\nGratulation !\n\n&amp;quot;);&lt;br /&gt;
  printf (&amp;quot;Die Tuer ist offen.\n&amp;quot;);&lt;br /&gt;
  printf (&amp;quot;So sahen Schluessel und Schloss aus \n&amp;quot;);&lt;br /&gt;
  printf (&amp;quot;Schloss    : %32s \n&amp;quot;, toBin(*abb));&lt;br /&gt;
  printf (&amp;quot;Schluessel : %32s \n&amp;quot;, toBin(~*abb));&lt;br /&gt;
  exit(0);&lt;br /&gt;
 }else{&lt;br /&gt;
  printf (&amp;quot;%3d . Versuch, %d richtige Bits \n&amp;quot;, ++versuche, rightBits);&lt;br /&gt;
  return rightBits;&lt;br /&gt;
 }&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 /*Hier wird das zufaellige Schloss generiert. Bitte nicht veraendern sonst geht der Spaß verloren. */&lt;br /&gt;
 void generate(void)&lt;br /&gt;
 {&lt;br /&gt;
  printf (&amp;quot;\nSchloss wurde erstellt.\nViel Spass beim probieren.\n\n&amp;quot;);&lt;br /&gt;
  unsigned int secret;&lt;br /&gt;
  abb = (unsigned int*) malloc (1);&lt;br /&gt;
  srand ( time(NULL) );&lt;br /&gt;
  secret = rand();&lt;br /&gt;
  *abb = secret;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 /*Konvertierungsfunktion zur Ausgabe der Binaerrepraesentation einer Zahl*/&lt;br /&gt;
 char * toBin(unsigned int num)&lt;br /&gt;
 {&lt;br /&gt;
  static char retbuf[33];&lt;br /&gt;
  int i =0;&lt;br /&gt;
  for(; i&amp;lt;33 ; i++){&lt;br /&gt;
   retbuf[i]='0';&lt;br /&gt;
  }&lt;br /&gt;
  char *p;&lt;br /&gt;
  p = &amp;amp;retbuf[sizeof(retbuf)-1];&lt;br /&gt;
  *p = '\0';&lt;br /&gt;
  do {&lt;br /&gt;
   *--p = &amp;quot;0123456789abcdef&amp;quot;[num % 2];&lt;br /&gt;
   num /= 2;&lt;br /&gt;
  } while(num != 0);&lt;br /&gt;
  return retbuf;&lt;br /&gt;
 }&lt;/div&gt;</summary>
		<author><name>P.brodmann</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=C-Kurs/digitalesSchloesserKnacken/Musterl%C3%B6sung&amp;diff=14750</id>
		<title>C-Kurs/digitalesSchloesserKnacken/Musterlösung</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=C-Kurs/digitalesSchloesserKnacken/Musterl%C3%B6sung&amp;diff=14750"/>
		<updated>2010-09-04T10:33:59Z</updated>

		<summary type="html">&lt;p&gt;P.brodmann: CKURS Aufgabe &amp;quot;digitales Schloesser knacken&amp;quot; Musterlösung erstellt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; #include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;time.h&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 unsigned int* abb;&lt;br /&gt;
 unsigned int versuche = 0;&lt;br /&gt;
 &lt;br /&gt;
 void generate(void);&lt;br /&gt;
 int test(unsigned int);&lt;br /&gt;
 char * toBin(unsigned int);&lt;br /&gt;
 unsigned int switchBit(int,int);&lt;br /&gt;
 &lt;br /&gt;
 int main (void)&lt;br /&gt;
 {&lt;br /&gt;
  generate();&lt;br /&gt;
  int key = 0;&lt;br /&gt;
  /* ab hier kannst du versuchen die Tuer mit deinem Schluessel zuknacken.&lt;br /&gt;
  veraendere die Variable Key dazu mit den dir bekannten bitweisen Operatoren&lt;br /&gt;
  die du in der Vorlesung kennengelernt hast.&lt;br /&gt;
  Du kannst deinen Schluessel dann mit der Funktion test() mit deinem Schluessel&lt;br /&gt;
  als Parameter testen.&lt;br /&gt;
  */&lt;br /&gt;
  int i = 0;&lt;br /&gt;
  for(; i &amp;lt; 32 ; i++){/* fuer jedes Bit wird geprueft ob es Richtig ist oder ob es getaucht werden muss*/&lt;br /&gt;
   int rigthBits  = test(key);/* Anzahl der richtigen Bits bevor das i-te Bit getauscht wurde*/&lt;br /&gt;
   int newRightBits = test(switchBit(key,i));/* Anzahl der richtigen Bits nachdem das i-te Bit getauscht wurde*/&lt;br /&gt;
   if(newRightBits &amp;gt; rigthBits)&lt;br /&gt;
    key=switchBit(key,i);/* wenn die Anzahl der richtigen Bits nach dem Tausch groeßer ist als vorher ist der Schluessel mit dem getauschten bit der Neue Schluessel*/&lt;br /&gt;
  }&lt;br /&gt;
 return 0;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 /*Diese Funktion vertaucht das in whichBit uebgebene Bit in dem uebergebenen Schluessel&lt;br /&gt;
 und liefert den so veraenderten Schluessel als Rueckgabewert*/&lt;br /&gt;
 unsigned int switchBit(int key , int whichBit)&lt;br /&gt;
 {&lt;br /&gt;
  return key ^ (1&amp;lt;&amp;lt;whichBit);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 /* diese Funktion liefert die Anzahl der Richtigen Bits im uebergebenen Schluessel zurueck.&lt;br /&gt;
 falls 32 zurueckgeliefert wird war der Schluessel richtig und die Tuer oeffnet sich.&lt;br /&gt;
 */&lt;br /&gt;
 int test(unsigned int toTest)&lt;br /&gt;
 {&lt;br /&gt;
 int rightBits = 0;&lt;br /&gt;
 int i = 0;&lt;br /&gt;
 for(; i&amp;lt; 32 ; i++){&lt;br /&gt;
  unsigned int x = 1 &amp;lt;&amp;lt; i;&lt;br /&gt;
  if(! ~((toTest &amp;amp; x) ^ (*abb| ~x))){&lt;br /&gt;
   rightBits++;&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
 if(rightBits == 32){&lt;br /&gt;
  printf (&amp;quot;\nGratulation !\n\n&amp;quot;);&lt;br /&gt;
  printf (&amp;quot;Die Tuer ist offen.\n&amp;quot;);&lt;br /&gt;
  printf (&amp;quot;So sahen Schluessel und Schloss aus \n&amp;quot;);&lt;br /&gt;
  printf (&amp;quot;Schloss    : %32s \n&amp;quot;, toBin(*abb));&lt;br /&gt;
  printf (&amp;quot;Schluessel : %32s \n&amp;quot;, toBin(~*abb));&lt;br /&gt;
  exit(0);&lt;br /&gt;
 }else{&lt;br /&gt;
  printf (&amp;quot;%3d . Versuch, %d richtige Bits \n&amp;quot;, ++versuche, rightBits);&lt;br /&gt;
  return rightBits;&lt;br /&gt;
 }&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 /*Hier wird das zufaellige Schloss generiert. Bitte nicht veraendern sonst geht der Spaß verloren. */&lt;br /&gt;
 void generate(void)&lt;br /&gt;
 {&lt;br /&gt;
  printf (&amp;quot;\nSchloss wurde erstellt.\nViel Spass beim probieren.\n\n&amp;quot;);&lt;br /&gt;
  unsigned int secret;&lt;br /&gt;
  abb = (unsigned int*) malloc (1);&lt;br /&gt;
  srand ( time(NULL) );&lt;br /&gt;
  secret = rand();&lt;br /&gt;
  *abb = secret;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 /*Konvertierungsfunktion zur Ausgabe der Binaerrepraesentation einer Zahl*/&lt;br /&gt;
 char * toBin(unsigned int num)&lt;br /&gt;
 {&lt;br /&gt;
  static char retbuf[33];&lt;br /&gt;
  int i =0;&lt;br /&gt;
  for(; i&amp;lt;33 ; i++){&lt;br /&gt;
   retbuf[i]='0';&lt;br /&gt;
  }&lt;br /&gt;
  char *p;&lt;br /&gt;
  p = &amp;amp;retbuf[sizeof(retbuf)-1];&lt;br /&gt;
  *p = '\0';&lt;br /&gt;
  do {&lt;br /&gt;
   *--p = &amp;quot;0123456789abcdef&amp;quot;[num % 2];&lt;br /&gt;
   num /= 2;&lt;br /&gt;
  } while(num != 0);&lt;br /&gt;
  return retbuf;&lt;br /&gt;
 }&lt;/div&gt;</summary>
		<author><name>P.brodmann</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=C-Kurs/digitalesSchloesserKnacken&amp;diff=14749</id>
		<title>C-Kurs/digitalesSchloesserKnacken</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=C-Kurs/digitalesSchloesserKnacken&amp;diff=14749"/>
		<updated>2010-09-04T10:21:04Z</updated>

		<summary type="html">&lt;p&gt;P.brodmann: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Aufgabe==&lt;br /&gt;
In dieser Aufgabe geht es darum für ein digitales Schloss den passenden Schlüssel zu finden. Dabei werden sowohl Schloss als auch Schlüssel  durch eine Integer-Variable repräsentiert (genauer gesagt die Binärrepräsentation). Damit ein Schlüssel in zu einem Schloss passt muss der Schlüssel  überall dort wo der Schloss 0-en hat eine 1 aufweisen und andersherum genauso. Also muss der Schlüssel das bitweise Komplement des Schlosses sein. &amp;lt;br&amp;gt; &amp;lt;br&amp;gt; &lt;br /&gt;
 Schlüssel: 010001110 &lt;br /&gt;
 Schloss:   101110001&lt;br /&gt;
Die Schwierigkeit besteht nun darin das der Aufbau des Schlosses nicht bekannt ist. Es muss also probiert werden. Dieses kann mit der Funktion test() geschehen. Diese nimmt einen Schlüssel testet ihn am Schloss und liefert die Anzahl der richtigen Bits als Rückgabewert. Falls der richtige Schlüssel gefunden beendet die Funktion test() automatisch das Programm und gibt eine entsprechende Meldung aus.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Vorgabe==&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;time.h&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 unsigned int* abb;&lt;br /&gt;
 unsigned int versuche = 0;&lt;br /&gt;
 &lt;br /&gt;
 void generate(void);&lt;br /&gt;
 int test(unsigned int);&lt;br /&gt;
 char * toBin(unsigned int);&lt;br /&gt;
 &lt;br /&gt;
 int main (void)&lt;br /&gt;
 {&lt;br /&gt;
  generate();&lt;br /&gt;
  unsigned int key = 0;&lt;br /&gt;
  /* ab hier kannst du versuchen die Tuer mit deinem Schlüssel zu knacken.&lt;br /&gt;
  verändere die Variable Key dazu mit den dir bekannten bitweisen Operatoren&lt;br /&gt;
  die du in der Vorlesung kennengelernt hast.&lt;br /&gt;
  Du kannst deinen Schlüssel dann mit der Funktion test() mit deinem Schlüssel&lt;br /&gt;
  als Parameter testen.&lt;br /&gt;
  bitte beachte das sowohl Schlüssel als auch Schloss unsigned Integer sind.&lt;br /&gt;
  */&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 return 0;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 /* diese Funktion liefert die Anzahl der Richtigen Bits im Übergebenen Schlüssel zurück.&lt;br /&gt;
 falls 32 zurückgeliefert wird war der Schlüssel richtig und die Tür öffnet sich.&lt;br /&gt;
 */&lt;br /&gt;
 int test(unsigned int toTest)&lt;br /&gt;
 {&lt;br /&gt;
 int rightBits = 0;&lt;br /&gt;
 int i = 0;&lt;br /&gt;
 for(; i&amp;lt; 32 ; i++){&lt;br /&gt;
  unsigned int x = 1 &amp;lt;&amp;lt; i;&lt;br /&gt;
  if(! ~((toTest &amp;amp; x) ^ (*abb| ~x))){&lt;br /&gt;
   rightBits++;&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
 if(rightBits == 32){&lt;br /&gt;
  printf (&amp;quot;\nGratulation !\n\n&amp;quot;);&lt;br /&gt;
  printf (&amp;quot;Die Tuer ist offen.\n&amp;quot;);&lt;br /&gt;
  printf (&amp;quot;So sahen Schluessel und Schloss aus \n&amp;quot;);&lt;br /&gt;
  printf (&amp;quot;Schloss    : %32s \n&amp;quot;, toBin(*abb));&lt;br /&gt;
  printf (&amp;quot;Schluessel : %32s \n&amp;quot;, toBin(~*abb));&lt;br /&gt;
  exit(0);&lt;br /&gt;
 }else{&lt;br /&gt;
  printf (&amp;quot;%d . Versuch, %d richtige Bits \n&amp;quot;, ++versuche, rightBits);&lt;br /&gt;
  return rightBits;&lt;br /&gt;
 }&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 /*Hier wird das zufällige Schloss generiert. Bitte nicht veraendern sonst geht der Spaß verloren. */&lt;br /&gt;
 void generate(void)&lt;br /&gt;
 {&lt;br /&gt;
  printf (&amp;quot;\nSchloss wurde erstellt.\nViel Spass beim probieren.\n\n&amp;quot;);&lt;br /&gt;
  unsigned int secret;&lt;br /&gt;
  abb = (unsigned int*) malloc (1);&lt;br /&gt;
  srand ( time(NULL) );&lt;br /&gt;
  secret = rand();&lt;br /&gt;
  *abb = secret;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 /*Konvertierungsfunktion zur Ausgabe der Binaerrepraesentation einer Zahl*/&lt;br /&gt;
 char * toBin(unsigned int num)&lt;br /&gt;
 {&lt;br /&gt;
  static char retbuf[33];&lt;br /&gt;
  int i =0;&lt;br /&gt;
  for(; i&amp;lt;33 ; i++){&lt;br /&gt;
   retbuf[i]='0';&lt;br /&gt;
  }&lt;br /&gt;
  char *p;&lt;br /&gt;
  p = &amp;amp;retbuf[sizeof(retbuf)-1];&lt;br /&gt;
  *p = '\0';&lt;br /&gt;
  do {&lt;br /&gt;
   *--p = &amp;quot;0123456789abcdef&amp;quot;[num % 2];&lt;br /&gt;
   num /= 2;&lt;br /&gt;
  } while(num != 0);&lt;br /&gt;
  return retbuf;&lt;br /&gt;
 }&lt;/div&gt;</summary>
		<author><name>P.brodmann</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=C-Kurs/digitalesSchloesserKnacken&amp;diff=14748</id>
		<title>C-Kurs/digitalesSchloesserKnacken</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=C-Kurs/digitalesSchloesserKnacken&amp;diff=14748"/>
		<updated>2010-09-04T10:17:47Z</updated>

		<summary type="html">&lt;p&gt;P.brodmann: CKURS Aufgabe &amp;quot;digitales Schloesser knacken&amp;quot; Aufgabestellung erstellt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Aufgabe==&lt;br /&gt;
In dieser Aufgabe geht es darum für ein digitales Schloss den passenden Schlüssel zu finden. Dabei werden sowohl Schloss als auch Schlüssel  durch eine Integer-Variable repräsentiert (genauer gesagt die Binärrepräsentation). Damit ein Schlüssel in zu einem Schloss passt muss der Schlüssel  überall dort wo der Schloss 0-en hat eine 1 aufweisen und andersherum genauso. Also muss der Schlüssel das bitweise Komplement des Schlosses sein. &amp;lt;br&amp;gt; &amp;lt;br&amp;gt; &lt;br /&gt;
 Schlüssel: 010001110 &lt;br /&gt;
 Schloss:   101110001&lt;br /&gt;
Die Schwierigkeit besteht nun darin das der Aufbau des Schlosses nicht bekannt ist. Es muss also probiert werden. Dieses kann mit der Funktion test() geschehen. Diese nimmt einen Schlüssel testet ihn am Schloss und liefert die Anzahl der richtigen Bits als Rückgabewert. Falls der richtige Schlüssel gefunden beendet die Funktion test() automatisch das Programm und gibt eine entsprechende Meldung aus.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Vorgabe==&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;time.h&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 unsigned int* abb;&lt;br /&gt;
 unsigned int versuche = 0;&lt;br /&gt;
 &lt;br /&gt;
 void generate(void);&lt;br /&gt;
 int test(unsigned int);&lt;br /&gt;
 char * toBin(unsigned int);&lt;br /&gt;
 &lt;br /&gt;
 int main (void)&lt;br /&gt;
 {&lt;br /&gt;
  generate();&lt;br /&gt;
  int key = 0;&lt;br /&gt;
  /* ab hier kannst du versuchen die Tuer mit deinem Schlüssel zuknacken.&lt;br /&gt;
  verändere die Variable Key dazu mit den dir bekannten bitweisen Operatoren&lt;br /&gt;
  die du in der Vorlesung kennengelernt hast.&lt;br /&gt;
  Du kannst deinen Schlüssel dann mit der Funktion test() mit deinem Schlüssel&lt;br /&gt;
  als Parameter testen.&lt;br /&gt;
  */&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 return 0;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 /* diese Funktion liefert die Anzahl der Richtigen Bits im Übergebenen Schlüssel zurück.&lt;br /&gt;
 falls 32 zurückgeliefert wird war der Schlüssel richtig und die Tür öffnet sich.&lt;br /&gt;
 */&lt;br /&gt;
 int test(unsigned int toTest)&lt;br /&gt;
 {&lt;br /&gt;
 int rightBits = 0;&lt;br /&gt;
 int i = 0;&lt;br /&gt;
 for(; i&amp;lt; 32 ; i++){&lt;br /&gt;
  unsigned int x = 1 &amp;lt;&amp;lt; i;&lt;br /&gt;
  if(! ~((toTest &amp;amp; x) ^ (*abb| ~x))){&lt;br /&gt;
   rightBits++;&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
 if(rightBits == 32){&lt;br /&gt;
  printf (&amp;quot;\nGratulation !\n\n&amp;quot;);&lt;br /&gt;
  printf (&amp;quot;Die Tuer ist offen.\n&amp;quot;);&lt;br /&gt;
  printf (&amp;quot;So sahen Schluessel und Schloss aus \n&amp;quot;);&lt;br /&gt;
  printf (&amp;quot;Schloss    : %32s \n&amp;quot;, toBin(*abb));&lt;br /&gt;
  printf (&amp;quot;Schluessel : %32s \n&amp;quot;, toBin(~*abb));&lt;br /&gt;
  exit(0);&lt;br /&gt;
 }else{&lt;br /&gt;
  printf (&amp;quot;%d . Versuch, %d richtige Bits \n&amp;quot;, ++versuche, rightBits);&lt;br /&gt;
  return rightBits;&lt;br /&gt;
 }&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 /*Hier wird das zufällige Schloss generiert. Bitte nicht veraendern sonst geht der Spaß verloren. */&lt;br /&gt;
 void generate(void)&lt;br /&gt;
 {&lt;br /&gt;
  printf (&amp;quot;\nSchloss wurde erstellt.\nViel Spass beim probieren.\n\n&amp;quot;);&lt;br /&gt;
  unsigned int secret;&lt;br /&gt;
  abb = (unsigned int*) malloc (1);&lt;br /&gt;
  srand ( time(NULL) );&lt;br /&gt;
  secret = rand();&lt;br /&gt;
  *abb = secret;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 /*Konvertierungsfunktion zur Ausgabe der Binaerrepraesentation einer Zahl*/&lt;br /&gt;
 char * toBin(unsigned int num)&lt;br /&gt;
 {&lt;br /&gt;
  static char retbuf[33];&lt;br /&gt;
  int i =0;&lt;br /&gt;
  for(; i&amp;lt;33 ; i++){&lt;br /&gt;
   retbuf[i]='0';&lt;br /&gt;
  }&lt;br /&gt;
  char *p;&lt;br /&gt;
  p = &amp;amp;retbuf[sizeof(retbuf)-1];&lt;br /&gt;
  *p = '\0';&lt;br /&gt;
  do {&lt;br /&gt;
   *--p = &amp;quot;0123456789abcdef&amp;quot;[num % 2];&lt;br /&gt;
   num /= 2;&lt;br /&gt;
  } while(num != 0);&lt;br /&gt;
  return retbuf;&lt;br /&gt;
 }&lt;/div&gt;</summary>
		<author><name>P.brodmann</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=C-Kurs/%C3%9Cbungsaufgaben&amp;diff=14747</id>
		<title>C-Kurs/Übungsaufgaben</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=C-Kurs/%C3%9Cbungsaufgaben&amp;diff=14747"/>
		<updated>2010-09-04T09:59:54Z</updated>

		<summary type="html">&lt;p&gt;P.brodmann: CKURS Aufgabe &amp;quot;digitales Schloesser knacken&amp;quot; hinzugefügt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Wir haben jeder Aufgabe eine Einschätzung ihrer Schwierigkeit auf einer Skala von 1 bis 10 vorangestellt. Bei dieser Einschätzung sind wir von einem Gehirn ausgegangen, für welches das jeweilige Themengebiet völlig neu ist, das jedoch schon ein ganz gutes Verständnis dafür hat wie eine Programmiersprache denn so funktioniert. &lt;br /&gt;
Entsprechend kann eine schwer bewertete Aufgabe aus einem frühen Themengebiet für manch einen sehr einfach oder eine leicht bewertete aus einem späten Themengebiet für einen anderen sehr schwer sein. Es ist nur ein Wert, der euch helfen soll eure nächste Aufgabe zu wählen. &lt;br /&gt;
&lt;br /&gt;
Falls ihr Anmerkungen zu den Aufgaben habt, könnt ihr die Diskussionsseiten der jeweiligen Aufgaben nutzen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Schwierigkeitsgrade ==&lt;br /&gt;
&lt;br /&gt;
#  Reines Tutorial. Man muss nicht viel selbst denken&lt;br /&gt;
#  ...&lt;br /&gt;
#  Leichte Übungsaufgabe. Studies, die noch eher unsicher sind werden hier gut begleitet.&lt;br /&gt;
#  ...&lt;br /&gt;
#  Typische Aufgabe. Man muss den Kopf benutzen, bekommt an schwierigen Stellen aber Hilfestellungen.&lt;br /&gt;
#  ...&lt;br /&gt;
#  Herausfordernd, eher etwas für Studies die etwas fitter sind.&lt;br /&gt;
#  ...&lt;br /&gt;
#  Auch erfahrene Programmierer werden hier ein bis zwei Übungen beschäftigt sein&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
#  Tja, die Idee war da. Wir finden sie auch gut, aber es könnte wirklich anstrengend werden.&lt;br /&gt;
&lt;br /&gt;
== Die Aufgaben ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;2&amp;quot;&lt;br /&gt;
 |- bgcolor=&amp;quot;#D8D8D8&amp;quot;&lt;br /&gt;
 !Aufgabe&lt;br /&gt;
 !Schwierigkeit&lt;br /&gt;
 !Vorwissen&lt;br /&gt;
 !Lerneffekte&lt;br /&gt;
 !Bearbeiter&lt;br /&gt;
 !Korrektur gelesen&lt;br /&gt;
 !Musterlösung&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Von der Konsole zum HelloWorld | Von der Konsole zum HelloWorld]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |1&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |1. VL&lt;br /&gt;
 | Konsole benutzen, Hello World&lt;br /&gt;
 | Sebastian D.&lt;br /&gt;
 | [[Benutzer:Mario|Mario]] (2009), &lt;br /&gt;
 | &lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Fakultät | Fakultät]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |1. VL&lt;br /&gt;
 | Schleifen&lt;br /&gt;
 | Sebastian D.&lt;br /&gt;
 | Daniel (2009), &lt;br /&gt;
 |  &lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Fibonacci-Folge|Fibonacci-Folge]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |1. VL&lt;br /&gt;
 | Funktionen &amp;lt;br&amp;gt; Rekursion&lt;br /&gt;
 | Paul B.&lt;br /&gt;
 |&lt;br /&gt;
 | [[Ckurs2009/Fibonacci-Folge/Musterlösung | Fibonacci-Folge]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/digitalesSchloesserKnacken|digitales Schloesser knacken]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2-4&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |1. VL&lt;br /&gt;
 | Kontrollstrukturen &amp;lt;br&amp;gt;Bitweise Operatoren&lt;br /&gt;
 | Paul B.&lt;br /&gt;
 |&lt;br /&gt;
 | [[Ckurs2009/digitalesSchloesserKnacken/Musterlösung | digitales Schloesser knacken]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Rekursives_arbeiten|Rekursives Arbeiten]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3-5&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |1. VL&lt;br /&gt;
 | Bekannte Operatoren wie + durch Funktionen succ und neg nachbilden&lt;br /&gt;
 | Eugen R.&lt;br /&gt;
 |&lt;br /&gt;
 | [[Ckurs2009/Rekursives_arbeiten/Musterlösung | Rekursives Arbeiten]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Base64 | Base64]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |6&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |1. VL&lt;br /&gt;
 | Operatoren&lt;br /&gt;
 | Sebastian D.&lt;br /&gt;
 | Paul(2010)&lt;br /&gt;
 | [[Ckurs2009/Base64/Musterlösung | Base64]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/EingabeAusgabe | Ein- und Ausgabe]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |1&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2. VL&lt;br /&gt;
 | Einlesen von Benutzereingaben&amp;lt;br&amp;gt;Ausgabe derselben&lt;br /&gt;
 | [[Benutzer:Mario|Mario]]&lt;br /&gt;
 | nion (2009), &lt;br /&gt;
 | [[Ckurs2009/EingabeAusgabe/Musterlösung | Ein- und Ausgabe]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Taschenrechner | Taschenrechner]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2. VL&lt;br /&gt;
 | Eingabe+Ausgabe&amp;lt;br&amp;gt;Mathematische Operatoren&lt;br /&gt;
 | [[Benutzer:Mario|Mario]]&lt;br /&gt;
 | [[Benutzer:Tkroenert|TKroenert]] (2009), &lt;br /&gt;
 | [[Ckurs2009/Taschenrechner/Musterlösung | Taschenrechner]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/VerschachtelteSchleifen | Verschachtelte Schleifen]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2. VL&lt;br /&gt;
 | Umgang mit mehreren verschachtelten Schleifen&lt;br /&gt;
 | [[Benutzer:Dank|Daniel K.]]&lt;br /&gt;
 | AlexanderK (2009), &lt;br /&gt;
 |&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Glückspiel | Glücksspiel]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2. VL&lt;br /&gt;
 | Anwenden von Fallunterscheidungen und Einlesen von Werten aus der Konsole&lt;br /&gt;
 | [[Benutzer:Dank|Daniel K.]]&lt;br /&gt;
 | AlexanderK (2009), &lt;br /&gt;
 | [[Ckurs2009/Glückspiel/Musterlösung | Glückspiel]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Wochentag | Wochentagsrechnung]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2. VL&lt;br /&gt;
 | Einlesen von Benutzereingaben&amp;lt;br&amp;gt;Mathematikverständniss&lt;br /&gt;
 | [[Benutzer:Mario|Mario]]&lt;br /&gt;
 | nion (Musterlösung noch nicht vorhanden)  (2009), &lt;br /&gt;
 | &lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Taschenrechner2.0 | Taschenrechner ''2.0'']]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |8&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2. VL&lt;br /&gt;
 | Knobeln&amp;lt;br&amp;gt;Komplexes Aufgaben lösen&lt;br /&gt;
 | [[Benutzer:Mario|Mario]]&lt;br /&gt;
 | Martin K. (2009), &lt;br /&gt;
 | [[Ckurs2009/Taschenrechner2.0/Musterlösung | Taschenrechner ''2.0'']]&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Call by reference | Call by reference]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Einfache Anwendung von &amp;amp;/*&lt;br /&gt;
 | sping&lt;br /&gt;
 | nion (2009), &lt;br /&gt;
 | [[Ckurs2009/Call by reference/Musterlösung | Call by reference]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2010/String to Double | String to Double]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Original-Dokumentation anwenden (Opengroup, man pages)&amp;lt;br&amp;gt;Pointer auf Pointer&amp;lt;br&amp;gt;Const correctness&amp;lt;br&amp;gt;Strings&lt;br /&gt;
 | sping&lt;br /&gt;
 |&lt;br /&gt;
 | vorhanden&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Text processing | Text processing]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4, 6&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Strings&amp;lt;br&amp;gt;Pointer-Arithmetik&amp;lt;br&amp;gt;Pointer auf Pointer&amp;lt;br&amp;gt;Refactoring&lt;br /&gt;
 | sping&lt;br /&gt;
 | [[Benutzer:Mario|Mario]] (2009), &lt;br /&gt;
 | [[Ckurs2009/Text processing/Musterlösung | Text processing]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Palindrome | Palindrome]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Pointer und Strings&lt;br /&gt;
 | [[Benutzer:Dank|Daniel K.]]&lt;br /&gt;
 | nion (2009), &lt;br /&gt;
 | [[Ckurs2009/Palindrome/Musterlösung | Palindrome ]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/(Pointer) Swapping | (Pointer) Swapping]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Pointer und Arrays benutzen, generisches swap&lt;br /&gt;
 | Katrin&lt;br /&gt;
 |&lt;br /&gt;
 | [[Ckurs2009/(Pointer) Swapping/Musterlösung | (Pointer) Swapping]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Matrizenmultiplikation | Matrizenmultiplikation]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |6&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Mehrdimensionale Arrays&amp;lt;br&amp;gt;const correctness&lt;br /&gt;
 | sping&lt;br /&gt;
 | [[Benutzer:Mario|Mario]] (2009), &lt;br /&gt;
 | [[Ckurs2009/Matrizenmultiplikation/Musterlösung | Matrizenmultiplikation]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs/DreiD | 3D mit C]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5-9&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Mathematische Rechenoperationen, Algorithmik&lt;br /&gt;
 | AndreasF&lt;br /&gt;
 | &lt;br /&gt;
 | vorhanden&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Arrayuebergabe | Arrayuebergabe]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4/5&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4. VL&lt;br /&gt;
 | Einlesen von Benutzereingaben&amp;lt;br&amp;gt;Pointer und Pointerarithmetik&lt;br /&gt;
 | nion&lt;br /&gt;
 | Martin K. (2009), &lt;br /&gt;
 | [[Ckurs2009/Arrayuebergabe/Musterlösung | Arrayuebergabe]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Studentendatenbank | Studentendatenbank]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4. VL&lt;br /&gt;
 | struct, Pointer, Arrays&lt;br /&gt;
 | AlexanderK&lt;br /&gt;
 |&lt;br /&gt;
 | [[Ckurs2009/Studentendatenbank/Musterlösung | Studentendatenbank]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Sammelbestellung | Sammelbestellung]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2-5&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4. VL&lt;br /&gt;
 | Listen, Pointer, Speicherverwaltung&lt;br /&gt;
 | Florian S.&lt;br /&gt;
 | [[Benutzer:Mario|Mario]] (2009), &lt;br /&gt;
 |  [[Ckurs2009/Sammelbestellung/Musterlösung | Sammelbestellung]] &lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Zahlen_sagen | Zahlen sagen]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4. VL&lt;br /&gt;
 | Umgang mit Zeichenketten&lt;br /&gt;
 | Martin K.&lt;br /&gt;
 | &lt;br /&gt;
 | [[Ckurs2009/Zahlen_sagen/Musterlösung | Zahlen sagen]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Compiler, Präprozessor, Header Files | Compiler, Präprozessor, Header Files]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5. VL&lt;br /&gt;
 | Arbeiten mit mehreren Quellcode-Dateien, Kompilieren und Linken, Header-Dateien und #include, debugging-Makro verwenden&lt;br /&gt;
 | Katrin&lt;br /&gt;
 | AndyF (grad_dabei)&lt;br /&gt;
 | [https://wiki.freitagsrunde.org/Ckurs2009/Vortrag05 siehe Folien]&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Bus Error | Bus Error]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |8&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5. VL&lt;br /&gt;
 | Pointer, wie entsteht ein bus error&lt;br /&gt;
 | Katrin&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/BubbleSortDebug | BubbleSort Debugging]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |6. VL&lt;br /&gt;
 | Debuggen eines Programmes mit gdb&lt;br /&gt;
 | aeichner&lt;br /&gt;
 |&lt;br /&gt;
 | [[Ckurs2009/BubbleSortDebug/Musterlösung | BubbleSort Debugging]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Debug | Debugging]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |1-8&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |6. VL&lt;br /&gt;
 | Debuggen einer Anwendung nach Wahl&lt;br /&gt;
 | aeichner&lt;br /&gt;
 |&lt;br /&gt;
 | &lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Code Layout | Code Layout]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |7. VL&lt;br /&gt;
 | Kleinere Codeschipsel mit kleinen Unsauberkeiten&lt;br /&gt;
 | Daniel&lt;br /&gt;
 | [[Benutzer:Tkroenert|TKroenert]] (2010)&lt;br /&gt;
 | [[Ckurs2009/Code Layout/Musterlösung | Code Layout]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Refactoring | Refactoring]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5-9&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |7. VL&lt;br /&gt;
 | Wie verbessere ich den Quellcode eines Programmes.&lt;br /&gt;
 | Daniel&lt;br /&gt;
 | &lt;br /&gt;
 | [[Ckurs2009/Refactoring/Musterlösung | Refactoring]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Cat | Cat]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |6&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2. VL&lt;br /&gt;
 | Arbeiten mit Dateien&amp;lt;br&amp;gt;Kommandozeilenparameter&lt;br /&gt;
 | nion&lt;br /&gt;
 | sping (2009), &lt;br /&gt;
 | vorhanden&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Pong | Pong]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |7&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |9.VL (eigentlich 2.VL)&lt;br /&gt;
 | allgemeiner Programmablauf, fortgeschrittene Konsolenausgaben/eingaben&lt;br /&gt;
 | AlexanderK&lt;br /&gt;
 |&lt;br /&gt;
 | vorhanden &lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Buchhaltung | Buchhaltung]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |6&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5.VL&lt;br /&gt;
 | Lesen aus Dateien&lt;br /&gt;
 | reiner&lt;br /&gt;
 | AndyF (grad_dabei)&lt;br /&gt;
 | &lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/StringArraySortieren | StringArraySortieren]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |8&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Konsolparameter, Funktionspointer, stdlib&lt;br /&gt;
 | reiner&lt;br /&gt;
 |&lt;br /&gt;
 | vorhanden&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs/integral | integral]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Funktionspointer&lt;br /&gt;
 | reiner&lt;br /&gt;
 | [[Benutzer:Tkroenert|TKroenert]] (2010)&lt;br /&gt;
 | [[Ckurs/integral/Musterlösung | Musterloesung]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs/forschleife | forschleife]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |6. VL&lt;br /&gt;
 | Bug (zum Knobeln)&lt;br /&gt;
 | reiner&lt;br /&gt;
 | nion (2009), [[Benutzer:Tkroenert|TKroenert]] (2010)&lt;br /&gt;
 | vorhanden&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs/libgdsl | GDSL]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5-7&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |9. VL&lt;br /&gt;
 | Anwendung der Generic Data Structures Library&lt;br /&gt;
 | martin&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/StdLib | Standard C Library]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |9. VL&lt;br /&gt;
 | Recherche in der Standard C Bibliothek&lt;br /&gt;
 | martin&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Kleine und große Probleme ==&lt;br /&gt;
&lt;br /&gt;
* Die Tubit-Accounts haben nicht /bin/bash als shell, so dass die &amp;lt;strong&amp;gt;Cursortasten&amp;lt;/strong&amp;gt; nicht funktionieren. Workaround: als erstes Kommando 'bash' eingeben, man sieht dann auch in welchem Verzeichnis man gerade ist.&lt;br /&gt;
* wenn man nur den Promt 'bash-0.12' oder so erhält, also ohne das Verzeichnis in dem man ist, folgendes Kommando eingeben: &amp;lt;tt&amp;gt;export PS1='\u@\h:\w$ '&amp;lt;/tt&amp;gt; oder zum dauerhaften Speichern: &amp;lt;tt&amp;gt; echo &amp;quot;export PS1='\u@\h:\w$ '&amp;quot; &amp;gt;&amp;gt; ~/.bashrc &amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Musterlösungen ==&lt;br /&gt;
Die Lösungen zu den Aufgaben werden nach den jeweiligen Übungen hier veröffentlicht. Falls dies nicht geschieht, bitte den zuständigen Tutor fragen.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[Ckurs2009/Feedback|Feedback zum Kurs 2009]]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:CKurs]]&lt;br /&gt;
[[Kategorie:CKurs Aufgaben]]&lt;/div&gt;</summary>
		<author><name>P.brodmann</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=C-Kurs/Fibonacci-Folge/Musterl%C3%B6sung&amp;diff=14731</id>
		<title>C-Kurs/Fibonacci-Folge/Musterlösung</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=C-Kurs/Fibonacci-Folge/Musterl%C3%B6sung&amp;diff=14731"/>
		<updated>2010-09-01T19:09:26Z</updated>

		<summary type="html">&lt;p&gt;P.brodmann: CKURS Musterlösung Fibonacci-Folge erstellt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Musterlösung Fibonacci-Folge==&lt;br /&gt;
&lt;br /&gt;
 #include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 /* hier sollten alle verwendeten Funkltionen deklarariert werden ( insbesondere die fib() Funktion ) */ &lt;br /&gt;
 int fib(int);&lt;br /&gt;
 &lt;br /&gt;
 int main(int argc, char *argv[])&lt;br /&gt;
 {&lt;br /&gt;
 &lt;br /&gt;
 /* hier wird der Kommandozeilenparameter ausgelesen und in der Integer-Variablen 'n' gespeichert */&lt;br /&gt;
 if(argc != 2 ){&lt;br /&gt;
 	printf(&amp;quot;usage: './fib n' where n is a number \n&amp;quot;);&lt;br /&gt;
 }else{&lt;br /&gt;
 int n = atoi(argv[1]);&lt;br /&gt;
 &lt;br /&gt;
 /* hier wird der Integer-Variablen 'result' das Ergbniss der Funktion fib zugewiesen.*/&lt;br /&gt;
 int result = fib(n);&lt;br /&gt;
 &lt;br /&gt;
 /* wenn das Ergebniss der Rechung weiterhin in der Integer-Variablen 'result'gespeichert ist wird deren wert hier auf der Konsole ausgegeben. */ &lt;br /&gt;
 printf(&amp;quot;%d \n&amp;quot;,result);&lt;br /&gt;
 }&lt;br /&gt;
 return 0;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 /* diese Funktion berechnet das n-te Folgebglied der Fibonacci-Folge */&lt;br /&gt;
 int fib(int n){&lt;br /&gt;
 if( n == 0){ /* das 0-te Folgenglied ist per Definition 0 */&lt;br /&gt;
 	return 0;&lt;br /&gt;
 }&lt;br /&gt;
 if( n == 1){ /* das 1-te Folgenglied ist per Definition 1 */&lt;br /&gt;
 	return 1;&lt;br /&gt;
 }&lt;br /&gt;
 if( n &amp;gt; 1){ /* alle weiteren Folgenglieder werden aus den jeweiligen Vorgaengern berechnet */&lt;br /&gt;
 	return fib(n-1)+fib(n-2);&lt;br /&gt;
 }&lt;br /&gt;
 return 0;&lt;br /&gt;
 }&lt;/div&gt;</summary>
		<author><name>P.brodmann</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=C-Kurs/Fibonacci-Folge&amp;diff=14730</id>
		<title>C-Kurs/Fibonacci-Folge</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=C-Kurs/Fibonacci-Folge&amp;diff=14730"/>
		<updated>2010-09-01T19:02:41Z</updated>

		<summary type="html">&lt;p&gt;P.brodmann: CKURS Aufgabe Fibonacci-Folge estellt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Aufgabe ==&lt;br /&gt;
Vervollständigen sie die folgenden Vorgaben so, dass das Programm das n-te Folgenglied der Fibonacci-Folge berechnet. Das n-te Folgenglied ist dabei die Summe der beiden vorherigen. &lt;br /&gt;
&amp;lt;br&amp;gt; ''fib(0) = 0''&lt;br /&gt;
&amp;lt;br&amp;gt; ''fib(1) = 1''&lt;br /&gt;
&amp;lt;br&amp;gt; ''fib(n) = fib(n-1) + fib(n-2)''&lt;br /&gt;
== Vorgaben ==&lt;br /&gt;
 #include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
 /* hier sollten alle verwendeten Funkltionen deklarariert werden ( insbesondere die fib() Funktion ) */ &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 int main(int argc, char *argv[])&lt;br /&gt;
 {&lt;br /&gt;
 &lt;br /&gt;
 /* hier wird der Kommandozeilenparameter ausgelesen und in der Integer-Variablen 'n' gespeichert */&lt;br /&gt;
 if(argc != 2 ){&lt;br /&gt;
 	printf(&amp;quot;usage: './fib n' where n is a number \n&amp;quot;);&lt;br /&gt;
 return 1;&lt;br /&gt;
 }else{&lt;br /&gt;
 int n = atoi(argv[1]);&lt;br /&gt;
 &lt;br /&gt;
 /* hier wird der Integer-Variablen 'result' das Ergbniss der Funktion fib zugewiesen. Diese Funktion ist selbst zu implementiern.*/&lt;br /&gt;
 int result = fib(n);&lt;br /&gt;
 &lt;br /&gt;
 /* wenn das Ergebniss der Rechung weiterhin in der Integer-Variablen 'result'gespeichert ist wird deren wert hier auf der Konsole ausgegeben. */ &lt;br /&gt;
 printf(&amp;quot;%d \n&amp;quot;,result);&lt;br /&gt;
 &lt;br /&gt;
 }&lt;br /&gt;
 return 0;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 /* diese Funktion berechnet das n-te Folgebglied der Fibonacci-Folge */&lt;br /&gt;
 int fib(int n)&lt;br /&gt;
 {&lt;br /&gt;
 &lt;br /&gt;
 return 0;&lt;br /&gt;
 }&lt;br /&gt;
Vorrausgesetzt, du nennst deine Ergebnisvariable result, wird das Ergebnis direkt ausgegeben.&lt;/div&gt;</summary>
		<author><name>P.brodmann</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=C-Kurs/%C3%9Cbungsaufgaben&amp;diff=14729</id>
		<title>C-Kurs/Übungsaufgaben</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=C-Kurs/%C3%9Cbungsaufgaben&amp;diff=14729"/>
		<updated>2010-09-01T18:38:18Z</updated>

		<summary type="html">&lt;p&gt;P.brodmann: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Wir haben jeder Aufgabe eine Einschätzung ihrer Schwierigkeit auf einer Skala von 1 bis 10 vorangestellt. Bei dieser Einschätzung sind wir von einem Gehirn ausgegangen, für welches das jeweilige Themengebiet völlig neu ist, das jedoch schon ein ganz gutes Verständnis dafür hat wie eine Programmiersprache denn so funktioniert. &lt;br /&gt;
Entsprechend kann eine schwer bewertete Aufgabe aus einem frühen Themengebiet für manch einen sehr einfach oder eine leicht bewertete aus einem späten Themengebiet für einen anderen sehr schwer sein. Es ist nur ein Wert, der euch helfen soll eure nächste Aufgabe zu wählen. &lt;br /&gt;
&lt;br /&gt;
Falls ihr Anmerkungen zu den Aufgaben habt, könnt ihr die Diskussionsseiten der jeweiligen Aufgaben nutzen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Schwierigkeitsgrade ==&lt;br /&gt;
&lt;br /&gt;
#  Reines Tutorial. Man muss nicht viel selbst denken&lt;br /&gt;
#  ...&lt;br /&gt;
#  Leichte Übungsaufgabe. Studies, die noch eher unsicher sind werden hier gut begleitet.&lt;br /&gt;
#  ...&lt;br /&gt;
#  Typische Aufgabe. Man muss den Kopf benutzen, bekommt an schwierigen Stellen aber Hilfestellungen.&lt;br /&gt;
#  ...&lt;br /&gt;
#  Herausfordernd, eher etwas für Studies die etwas fitter sind.&lt;br /&gt;
#  ...&lt;br /&gt;
#  Auch erfahrene Programmierer werden hier ein bis zwei Übungen beschäftigt sein&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
#  Tja, die Idee war da. Wir finden sie auch gut, aber es könnte wirklich anstrengend werden.&lt;br /&gt;
&lt;br /&gt;
== Die Aufgaben ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;2&amp;quot;&lt;br /&gt;
 |- bgcolor=&amp;quot;#D8D8D8&amp;quot;&lt;br /&gt;
 !Aufgabe&lt;br /&gt;
 !Schwierigkeit&lt;br /&gt;
 !Vorwissen&lt;br /&gt;
 !Lerneffekte&lt;br /&gt;
 !Bearbeiter&lt;br /&gt;
 !Korrektur gelesen&lt;br /&gt;
 !Musterlösung&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Von der Konsole zum HelloWorld | Von der Konsole zum HelloWorld]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |1&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |1. VL&lt;br /&gt;
 | Konsole benutzen, Hello World&lt;br /&gt;
 | Sebastian D.&lt;br /&gt;
 | [[Benutzer:Mario|Mario]] (2009), &lt;br /&gt;
 | &lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Fakultät | Fakultät]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |1. VL&lt;br /&gt;
 | Schleifen&lt;br /&gt;
 | Sebastian D.&lt;br /&gt;
 | Daniel (2009), &lt;br /&gt;
 |  &lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Fibonacci-Folge|Fibonacci-Folge]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |1. VL&lt;br /&gt;
 | Folgenglieder der Fibonacci-Folge berechnen&lt;br /&gt;
 | Paul B.&lt;br /&gt;
 |&lt;br /&gt;
 | [[Ckurs2009/Fibonacci-Folge/Musterlösung | Fibonacci-Folge]]&lt;br /&gt;
 | &lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Base64 | Base64]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |6&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |1. VL&lt;br /&gt;
 | Operatoren&lt;br /&gt;
 | Sebastian D.&lt;br /&gt;
 | Paul(2010)&lt;br /&gt;
 | [[Ckurs2009/Base64/Musterlösung | Base64]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/EingabeAusgabe | Ein- und Ausgabe]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |1&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2. VL&lt;br /&gt;
 | Einlesen von Benutzereingaben&amp;lt;br&amp;gt;Ausgabe derselben&lt;br /&gt;
 | [[Benutzer:Mario|Mario]]&lt;br /&gt;
 | nion (2009), &lt;br /&gt;
 | [[Ckurs2009/EingabeAusgabe/Musterlösung | Ein- und Ausgabe]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Taschenrechner | Taschenrechner]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2. VL&lt;br /&gt;
 | Eingabe+Ausgabe&amp;lt;br&amp;gt;Mathematische Operatoren&lt;br /&gt;
 | [[Benutzer:Mario|Mario]]&lt;br /&gt;
 | [[Benutzer:Tkroenert|TKroenert]] (2009), &lt;br /&gt;
 | [[Ckurs2009/Taschenrechner/Musterlösung | Taschenrechner]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/VerschachtelteSchleifen | Verschachtelte Schleifen]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2. VL&lt;br /&gt;
 | Umgang mit mehreren verschachtelten Schleifen&lt;br /&gt;
 | [[Benutzer:Dank|Daniel K.]]&lt;br /&gt;
 | AlexanderK (2009), &lt;br /&gt;
 |&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Glückspiel | Glücksspiel]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2. VL&lt;br /&gt;
 | Anwenden von Fallunterscheidungen und Einlesen von Werten aus der Konsole&lt;br /&gt;
 | [[Benutzer:Dank|Daniel K.]]&lt;br /&gt;
 | AlexanderK (2009), &lt;br /&gt;
 | [[Ckurs2009/Glückspiel/Musterlösung | Glückspiel]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Wochentag | Wochentagsrechnung]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2. VL&lt;br /&gt;
 | Einlesen von Benutzereingaben&amp;lt;br&amp;gt;Mathematikverständniss&lt;br /&gt;
 | [[Benutzer:Mario|Mario]]&lt;br /&gt;
 | nion (Musterlösung noch nicht vorhanden)  (2009), &lt;br /&gt;
 | &lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Taschenrechner2.0 | Taschenrechner ''2.0'']]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |8&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2. VL&lt;br /&gt;
 | Knobeln&amp;lt;br&amp;gt;Komplexes Aufgaben lösen&lt;br /&gt;
 | [[Benutzer:Mario|Mario]]&lt;br /&gt;
 | Martin K. (2009), &lt;br /&gt;
 | [[Ckurs2009/Taschenrechner2.0/Musterlösung | Taschenrechner ''2.0'']]&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Call by reference | Call by reference]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Einfache Anwendung von &amp;amp;/*&lt;br /&gt;
 | sping&lt;br /&gt;
 | nion (2009), &lt;br /&gt;
 | [[Ckurs2009/Call by reference/Musterlösung | Call by reference]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Text processing | Text processing]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4, 6&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Strings&amp;lt;br&amp;gt;Pointer-Arithmetik&amp;lt;br&amp;gt;Pointer auf Pointer&amp;lt;br&amp;gt;Refactoring&lt;br /&gt;
 | sping&lt;br /&gt;
 | [[Benutzer:Mario|Mario]] (2009), &lt;br /&gt;
 | [[Ckurs2009/Text processing/Musterlösung | Text processing]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Palindrome | Palindrome]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Pointer und Strings&lt;br /&gt;
 | [[Benutzer:Dank|Daniel K.]]&lt;br /&gt;
 | nion (2009), &lt;br /&gt;
 | [[Ckurs2009/Palindrome/Musterlösung | Palindrome ]]&lt;br /&gt;
 | &lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/(Pointer) Swapping | (Pointer) Swapping]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Pointer und Arrays benutzen, generisches swap&lt;br /&gt;
 | Katrin&lt;br /&gt;
 |&lt;br /&gt;
 | [[Ckurs2009/(Pointer) Swapping/Musterlösung | (Pointer) Swapping]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Matrizenmultiplikation | Matrizenmultiplikation]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |6&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Mehrdimensionale Arrays&amp;lt;br&amp;gt;const correctness&lt;br /&gt;
 | sping&lt;br /&gt;
 | [[Benutzer:Mario|Mario]] (2009), &lt;br /&gt;
 | [[Ckurs2009/Matrizenmultiplikation/Musterlösung | Matrizenmultiplikation]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Arrayuebergabe | Arrayuebergabe]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4/5&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4. VL&lt;br /&gt;
 | Einlesen von Benutzereingaben&amp;lt;br&amp;gt;Pointer und Pointerarithmetik&lt;br /&gt;
 | nion&lt;br /&gt;
 | Martin K. (2009), &lt;br /&gt;
 | [[Ckurs2009/Arrayuebergabe/Musterlösung | Arrayuebergabe]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Studentendatenbank | Studentendatenbank]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4. VL&lt;br /&gt;
 | struct, Pointer, Arrays&lt;br /&gt;
 | AlexanderK&lt;br /&gt;
 |&lt;br /&gt;
 | [[Ckurs2009/Studentendatenbank/Musterlösung | Studentendatenbank]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Sammelbestellung | Sammelbestellung]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2-5&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4. VL&lt;br /&gt;
 | Listen, Pointer, Speicherverwaltung&lt;br /&gt;
 | Florian S.&lt;br /&gt;
 | [[Benutzer:Mario|Mario]] (2009), &lt;br /&gt;
 |  [[Ckurs2009/Sammelbestellung/Musterlösung | Sammelbestellung]] &lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Zahlen_sagen | Zahlen sagen]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4. VL&lt;br /&gt;
 | Umgang mit Zeichenketten&lt;br /&gt;
 | Martin K.&lt;br /&gt;
 | &lt;br /&gt;
 | [[Ckurs2009/Zahlen_sagen/Musterlösung | Zahlen sagen]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Compiler, Präprozessor, Header Files | Compiler, Präprozessor, Header Files]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5. VL&lt;br /&gt;
 | Arbeiten mit mehreren Quellcode-Dateien, Kompilieren und Linken, Header-Dateien und #include, debugging-Makro verwenden&lt;br /&gt;
 | Katrin&lt;br /&gt;
 | &lt;br /&gt;
 | [https://wiki.freitagsrunde.org/Ckurs2009/Vortrag05 siehe Folien]&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Bus Error | Bus Error]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |8&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5. VL&lt;br /&gt;
 | Pointer, wie entsteht ein bus error&lt;br /&gt;
 | Katrin&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/BubbleSortDebug | BubbleSort Debugging]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |6. VL&lt;br /&gt;
 | Debuggen eines Programmes mit gdb&lt;br /&gt;
 | aeichner&lt;br /&gt;
 |&lt;br /&gt;
 | [[Ckurs2009/BubbleSortDebug/Musterlösung | BubbleSort Debugging]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Debug | Debugging]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |1-8&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |6. VL&lt;br /&gt;
 | Debuggen einer Anwendung nach Wahl&lt;br /&gt;
 | aeichner&lt;br /&gt;
 |&lt;br /&gt;
 | &lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Code Layout | Code Layout]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |7. VL&lt;br /&gt;
 | Kleinere Codeschipsel mit kleinen Unsauberkeiten&lt;br /&gt;
 | Daniel&lt;br /&gt;
 | [[Benutzer:Tkroenert|TKroenert]] (2010)&lt;br /&gt;
 | [[Ckurs2009/Code Layout/Musterlösung | Code Layout]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Refactoring | Refactoring]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5-9&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |7. VL&lt;br /&gt;
 | Wie verbessere ich den Quellcode eines Programmes.&lt;br /&gt;
 | Daniel&lt;br /&gt;
 | &lt;br /&gt;
 | [[Ckurs2009/Refactoring/Musterlösung | Refactoring]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Cat | Cat]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |6&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2. VL&lt;br /&gt;
 | Arbeiten mit Dateien&amp;lt;br&amp;gt;Kommandozeilenparameter&lt;br /&gt;
 | nion&lt;br /&gt;
 | sping (2009), &lt;br /&gt;
 | vorhanden&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Pong | Pong]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |7&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |9.VL (eigentlich 2.VL)&lt;br /&gt;
 | allgemeiner Programmablauf, fortgeschrittene Konsolenausgaben/eingaben&lt;br /&gt;
 | AlexanderK&lt;br /&gt;
 |&lt;br /&gt;
 | vorhanden &lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Buchhaltung | Buchhaltung]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |6&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5.VL&lt;br /&gt;
 | Lesen aus Dateien&lt;br /&gt;
 | reiner&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/StringArraySortieren | StringArraySortieren]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |8&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Konsolparameter, Funktionspointer, stdlib&lt;br /&gt;
 | reiner&lt;br /&gt;
 |&lt;br /&gt;
 | vorhanden&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs/integral | integral]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Funktionspointer&lt;br /&gt;
 | reiner&lt;br /&gt;
 | [[Benutzer:Tkroenert|TKroenert]] (2010)&lt;br /&gt;
 | [[Ckurs/integral/Musterlösung | Musterloesung]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs/forschleife | forschleife]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |6. VL&lt;br /&gt;
 | Bug (zum Knobeln)&lt;br /&gt;
 | reiner&lt;br /&gt;
 | nion (2009), [[Benutzer:Tkroenert|TKroenert]] (2010)&lt;br /&gt;
 | vorhanden&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs/libgdsl | GDSL]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5-7&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |9. VL&lt;br /&gt;
 | Anwendung der Generic Data Structures Library&lt;br /&gt;
 | martin&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/StdLib | Standard C Library]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |9. VL&lt;br /&gt;
 | Recherche in der Standard C Bibliothek&lt;br /&gt;
 | martin&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Kleine und große Probleme ==&lt;br /&gt;
&lt;br /&gt;
* Die Tubit-Accounts haben nicht /bin/bash als shell, so dass die &amp;lt;strong&amp;gt;Cursortasten&amp;lt;/strong&amp;gt; nicht funktionieren. Workaround: als erstes Kommando 'bash' eingeben, man sieht dann auch in welchem Verzeichnis man gerade ist.&lt;br /&gt;
* wenn man nur den Promt 'bash-0.12' oder so erhält, also ohne das Verzeichnis in dem man ist, folgendes Kommando eingeben: &amp;lt;tt&amp;gt;export PS1='\u@\h:\w$ '&amp;lt;/tt&amp;gt; oder zum dauerhaften Speichern: &amp;lt;tt&amp;gt; echo &amp;quot;export PS1='\u@\h:\w$ '&amp;quot; &amp;gt;&amp;gt; ~/.bashrc &amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Musterlösungen ==&lt;br /&gt;
Die Lösungen zu den Aufgaben werden nach den jeweiligen Übungen hier veröffentlicht. Falls dies nicht geschieht, bitte den zuständigen Tutor fragen.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[Ckurs2009/Feedback|Feedback zum Kurs 2009]]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:CKurs]]&lt;br /&gt;
[[Kategorie:CKurs Aufgaben]]&lt;/div&gt;</summary>
		<author><name>P.brodmann</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=C-Kurs/%C3%9Cbungsaufgaben&amp;diff=14728</id>
		<title>C-Kurs/Übungsaufgaben</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=C-Kurs/%C3%9Cbungsaufgaben&amp;diff=14728"/>
		<updated>2010-09-01T18:37:27Z</updated>

		<summary type="html">&lt;p&gt;P.brodmann: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Wir haben jeder Aufgabe eine Einschätzung ihrer Schwierigkeit auf einer Skala von 1 bis 10 vorangestellt. Bei dieser Einschätzung sind wir von einem Gehirn ausgegangen, für welches das jeweilige Themengebiet völlig neu ist, das jedoch schon ein ganz gutes Verständnis dafür hat wie eine Programmiersprache denn so funktioniert. &lt;br /&gt;
Entsprechend kann eine schwer bewertete Aufgabe aus einem frühen Themengebiet für manch einen sehr einfach oder eine leicht bewertete aus einem späten Themengebiet für einen anderen sehr schwer sein. Es ist nur ein Wert, der euch helfen soll eure nächste Aufgabe zu wählen. &lt;br /&gt;
&lt;br /&gt;
Falls ihr Anmerkungen zu den Aufgaben habt, könnt ihr die Diskussionsseiten der jeweiligen Aufgaben nutzen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Schwierigkeitsgrade ==&lt;br /&gt;
&lt;br /&gt;
#  Reines Tutorial. Man muss nicht viel selbst denken&lt;br /&gt;
#  ...&lt;br /&gt;
#  Leichte Übungsaufgabe. Studies, die noch eher unsicher sind werden hier gut begleitet.&lt;br /&gt;
#  ...&lt;br /&gt;
#  Typische Aufgabe. Man muss den Kopf benutzen, bekommt an schwierigen Stellen aber Hilfestellungen.&lt;br /&gt;
#  ...&lt;br /&gt;
#  Herausfordernd, eher etwas für Studies die etwas fitter sind.&lt;br /&gt;
#  ...&lt;br /&gt;
#  Auch erfahrene Programmierer werden hier ein bis zwei Übungen beschäftigt sein&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
#  Tja, die Idee war da. Wir finden sie auch gut, aber es könnte wirklich anstrengend werden.&lt;br /&gt;
&lt;br /&gt;
== Die Aufgaben ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;2&amp;quot;&lt;br /&gt;
 |- bgcolor=&amp;quot;#D8D8D8&amp;quot;&lt;br /&gt;
 !Aufgabe&lt;br /&gt;
 !Schwierigkeit&lt;br /&gt;
 !Vorwissen&lt;br /&gt;
 !Lerneffekte&lt;br /&gt;
 !Bearbeiter&lt;br /&gt;
 !Korrektur gelesen&lt;br /&gt;
 !Musterlösung&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Von der Konsole zum HelloWorld | Von der Konsole zum HelloWorld]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |1&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |1. VL&lt;br /&gt;
 | Konsole benutzen, Hello World&lt;br /&gt;
 | Sebastian D.&lt;br /&gt;
 | [[Benutzer:Mario|Mario]] (2009), &lt;br /&gt;
 | &lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Fakultät | Fakultät]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |1. VL&lt;br /&gt;
 | Schleifen&lt;br /&gt;
 | Sebastian D.&lt;br /&gt;
 | Daniel (2009), &lt;br /&gt;
 |  &lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Fibonacci-Folge|Fibonacci-Folge]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |1&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |1. VL&lt;br /&gt;
 | Folgenglieder der Fibonacci-Folge berechnen&lt;br /&gt;
 | Paul B.&lt;br /&gt;
 |&lt;br /&gt;
 | [[Ckurs2009/Fibonacci-Folge/Musterlösung | Fibonacci-Folge]]&lt;br /&gt;
 | &lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Base64 | Base64]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |6&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |1. VL&lt;br /&gt;
 | Operatoren&lt;br /&gt;
 | Sebastian D.&lt;br /&gt;
 | Paul(2010)&lt;br /&gt;
 | [[Ckurs2009/Base64/Musterlösung | Base64]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/EingabeAusgabe | Ein- und Ausgabe]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |1&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2. VL&lt;br /&gt;
 | Einlesen von Benutzereingaben&amp;lt;br&amp;gt;Ausgabe derselben&lt;br /&gt;
 | [[Benutzer:Mario|Mario]]&lt;br /&gt;
 | nion (2009), &lt;br /&gt;
 | [[Ckurs2009/EingabeAusgabe/Musterlösung | Ein- und Ausgabe]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Taschenrechner | Taschenrechner]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2. VL&lt;br /&gt;
 | Eingabe+Ausgabe&amp;lt;br&amp;gt;Mathematische Operatoren&lt;br /&gt;
 | [[Benutzer:Mario|Mario]]&lt;br /&gt;
 | [[Benutzer:Tkroenert|TKroenert]] (2009), &lt;br /&gt;
 | [[Ckurs2009/Taschenrechner/Musterlösung | Taschenrechner]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/VerschachtelteSchleifen | Verschachtelte Schleifen]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2. VL&lt;br /&gt;
 | Umgang mit mehreren verschachtelten Schleifen&lt;br /&gt;
 | [[Benutzer:Dank|Daniel K.]]&lt;br /&gt;
 | AlexanderK (2009), &lt;br /&gt;
 |&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Glückspiel | Glücksspiel]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2. VL&lt;br /&gt;
 | Anwenden von Fallunterscheidungen und Einlesen von Werten aus der Konsole&lt;br /&gt;
 | [[Benutzer:Dank|Daniel K.]]&lt;br /&gt;
 | AlexanderK (2009), &lt;br /&gt;
 | [[Ckurs2009/Glückspiel/Musterlösung | Glückspiel]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Wochentag | Wochentagsrechnung]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2. VL&lt;br /&gt;
 | Einlesen von Benutzereingaben&amp;lt;br&amp;gt;Mathematikverständniss&lt;br /&gt;
 | [[Benutzer:Mario|Mario]]&lt;br /&gt;
 | nion (Musterlösung noch nicht vorhanden)  (2009), &lt;br /&gt;
 | &lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Taschenrechner2.0 | Taschenrechner ''2.0'']]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |8&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2. VL&lt;br /&gt;
 | Knobeln&amp;lt;br&amp;gt;Komplexes Aufgaben lösen&lt;br /&gt;
 | [[Benutzer:Mario|Mario]]&lt;br /&gt;
 | Martin K. (2009), &lt;br /&gt;
 | [[Ckurs2009/Taschenrechner2.0/Musterlösung | Taschenrechner ''2.0'']]&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Call by reference | Call by reference]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Einfache Anwendung von &amp;amp;/*&lt;br /&gt;
 | sping&lt;br /&gt;
 | nion (2009), &lt;br /&gt;
 | [[Ckurs2009/Call by reference/Musterlösung | Call by reference]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Text processing | Text processing]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4, 6&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Strings&amp;lt;br&amp;gt;Pointer-Arithmetik&amp;lt;br&amp;gt;Pointer auf Pointer&amp;lt;br&amp;gt;Refactoring&lt;br /&gt;
 | sping&lt;br /&gt;
 | [[Benutzer:Mario|Mario]] (2009), &lt;br /&gt;
 | [[Ckurs2009/Text processing/Musterlösung | Text processing]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Palindrome | Palindrome]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Pointer und Strings&lt;br /&gt;
 | [[Benutzer:Dank|Daniel K.]]&lt;br /&gt;
 | nion (2009), &lt;br /&gt;
 | [[Ckurs2009/Palindrome/Musterlösung | Palindrome ]]&lt;br /&gt;
 | &lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/(Pointer) Swapping | (Pointer) Swapping]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Pointer und Arrays benutzen, generisches swap&lt;br /&gt;
 | Katrin&lt;br /&gt;
 |&lt;br /&gt;
 | [[Ckurs2009/(Pointer) Swapping/Musterlösung | (Pointer) Swapping]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Matrizenmultiplikation | Matrizenmultiplikation]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |6&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Mehrdimensionale Arrays&amp;lt;br&amp;gt;const correctness&lt;br /&gt;
 | sping&lt;br /&gt;
 | [[Benutzer:Mario|Mario]] (2009), &lt;br /&gt;
 | [[Ckurs2009/Matrizenmultiplikation/Musterlösung | Matrizenmultiplikation]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Arrayuebergabe | Arrayuebergabe]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4/5&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4. VL&lt;br /&gt;
 | Einlesen von Benutzereingaben&amp;lt;br&amp;gt;Pointer und Pointerarithmetik&lt;br /&gt;
 | nion&lt;br /&gt;
 | Martin K. (2009), &lt;br /&gt;
 | [[Ckurs2009/Arrayuebergabe/Musterlösung | Arrayuebergabe]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Studentendatenbank | Studentendatenbank]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4. VL&lt;br /&gt;
 | struct, Pointer, Arrays&lt;br /&gt;
 | AlexanderK&lt;br /&gt;
 |&lt;br /&gt;
 | [[Ckurs2009/Studentendatenbank/Musterlösung | Studentendatenbank]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Sammelbestellung | Sammelbestellung]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2-5&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4. VL&lt;br /&gt;
 | Listen, Pointer, Speicherverwaltung&lt;br /&gt;
 | Florian S.&lt;br /&gt;
 | [[Benutzer:Mario|Mario]] (2009), &lt;br /&gt;
 |  [[Ckurs2009/Sammelbestellung/Musterlösung | Sammelbestellung]] &lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Zahlen_sagen | Zahlen sagen]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4. VL&lt;br /&gt;
 | Umgang mit Zeichenketten&lt;br /&gt;
 | Martin K.&lt;br /&gt;
 | &lt;br /&gt;
 | [[Ckurs2009/Zahlen_sagen/Musterlösung | Zahlen sagen]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Compiler, Präprozessor, Header Files | Compiler, Präprozessor, Header Files]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5. VL&lt;br /&gt;
 | Arbeiten mit mehreren Quellcode-Dateien, Kompilieren und Linken, Header-Dateien und #include, debugging-Makro verwenden&lt;br /&gt;
 | Katrin&lt;br /&gt;
 | &lt;br /&gt;
 | [https://wiki.freitagsrunde.org/Ckurs2009/Vortrag05 siehe Folien]&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Bus Error | Bus Error]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |8&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5. VL&lt;br /&gt;
 | Pointer, wie entsteht ein bus error&lt;br /&gt;
 | Katrin&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/BubbleSortDebug | BubbleSort Debugging]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |6. VL&lt;br /&gt;
 | Debuggen eines Programmes mit gdb&lt;br /&gt;
 | aeichner&lt;br /&gt;
 |&lt;br /&gt;
 | [[Ckurs2009/BubbleSortDebug/Musterlösung | BubbleSort Debugging]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Debug | Debugging]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |1-8&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |6. VL&lt;br /&gt;
 | Debuggen einer Anwendung nach Wahl&lt;br /&gt;
 | aeichner&lt;br /&gt;
 |&lt;br /&gt;
 | &lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Code Layout | Code Layout]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |7. VL&lt;br /&gt;
 | Kleinere Codeschipsel mit kleinen Unsauberkeiten&lt;br /&gt;
 | Daniel&lt;br /&gt;
 | [[Benutzer:Tkroenert|TKroenert]] (2010)&lt;br /&gt;
 | [[Ckurs2009/Code Layout/Musterlösung | Code Layout]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Refactoring | Refactoring]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5-9&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |7. VL&lt;br /&gt;
 | Wie verbessere ich den Quellcode eines Programmes.&lt;br /&gt;
 | Daniel&lt;br /&gt;
 | &lt;br /&gt;
 | [[Ckurs2009/Refactoring/Musterlösung | Refactoring]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Cat | Cat]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |6&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2. VL&lt;br /&gt;
 | Arbeiten mit Dateien&amp;lt;br&amp;gt;Kommandozeilenparameter&lt;br /&gt;
 | nion&lt;br /&gt;
 | sping (2009), &lt;br /&gt;
 | vorhanden&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Pong | Pong]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |7&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |9.VL (eigentlich 2.VL)&lt;br /&gt;
 | allgemeiner Programmablauf, fortgeschrittene Konsolenausgaben/eingaben&lt;br /&gt;
 | AlexanderK&lt;br /&gt;
 |&lt;br /&gt;
 | vorhanden &lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Buchhaltung | Buchhaltung]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |6&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5.VL&lt;br /&gt;
 | Lesen aus Dateien&lt;br /&gt;
 | reiner&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/StringArraySortieren | StringArraySortieren]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |8&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Konsolparameter, Funktionspointer, stdlib&lt;br /&gt;
 | reiner&lt;br /&gt;
 |&lt;br /&gt;
 | vorhanden&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs/integral | integral]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Funktionspointer&lt;br /&gt;
 | reiner&lt;br /&gt;
 | [[Benutzer:Tkroenert|TKroenert]] (2010)&lt;br /&gt;
 | [[Ckurs/integral/Musterlösung | Musterloesung]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs/forschleife | forschleife]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |6. VL&lt;br /&gt;
 | Bug (zum Knobeln)&lt;br /&gt;
 | reiner&lt;br /&gt;
 | nion (2009), [[Benutzer:Tkroenert|TKroenert]] (2010)&lt;br /&gt;
 | vorhanden&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs/libgdsl | GDSL]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5-7&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |9. VL&lt;br /&gt;
 | Anwendung der Generic Data Structures Library&lt;br /&gt;
 | martin&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/StdLib | Standard C Library]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |9. VL&lt;br /&gt;
 | Recherche in der Standard C Bibliothek&lt;br /&gt;
 | martin&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Kleine und große Probleme ==&lt;br /&gt;
&lt;br /&gt;
* Die Tubit-Accounts haben nicht /bin/bash als shell, so dass die &amp;lt;strong&amp;gt;Cursortasten&amp;lt;/strong&amp;gt; nicht funktionieren. Workaround: als erstes Kommando 'bash' eingeben, man sieht dann auch in welchem Verzeichnis man gerade ist.&lt;br /&gt;
* wenn man nur den Promt 'bash-0.12' oder so erhält, also ohne das Verzeichnis in dem man ist, folgendes Kommando eingeben: &amp;lt;tt&amp;gt;export PS1='\u@\h:\w$ '&amp;lt;/tt&amp;gt; oder zum dauerhaften Speichern: &amp;lt;tt&amp;gt; echo &amp;quot;export PS1='\u@\h:\w$ '&amp;quot; &amp;gt;&amp;gt; ~/.bashrc &amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Musterlösungen ==&lt;br /&gt;
Die Lösungen zu den Aufgaben werden nach den jeweiligen Übungen hier veröffentlicht. Falls dies nicht geschieht, bitte den zuständigen Tutor fragen.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[Ckurs2009/Feedback|Feedback zum Kurs 2009]]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:CKurs]]&lt;br /&gt;
[[Kategorie:CKurs Aufgaben]]&lt;/div&gt;</summary>
		<author><name>P.brodmann</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=C-Kurs/%C3%9Cbungsaufgaben&amp;diff=14716</id>
		<title>C-Kurs/Übungsaufgaben</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=C-Kurs/%C3%9Cbungsaufgaben&amp;diff=14716"/>
		<updated>2010-08-31T19:22:21Z</updated>

		<summary type="html">&lt;p&gt;P.brodmann: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Wir haben jeder Aufgabe eine Einschätzung ihrer Schwierigkeit auf einer Skala von 1 bis 10 vorangestellt. Bei dieser Einschätzung sind wir von einem Gehirn ausgegangen, für welches das jeweilige Themengebiet völlig neu ist, das jedoch schon ein ganz gutes Verständnis dafür hat wie eine Programmiersprache denn so funktioniert. &lt;br /&gt;
Entsprechend kann eine schwer bewertete Aufgabe aus einem frühen Themengebiet für manch einen sehr einfach oder eine leicht bewertete aus einem späten Themengebiet für einen anderen sehr schwer sein. Es ist nur ein Wert, der euch helfen soll eure nächste Aufgabe zu wählen. &lt;br /&gt;
&lt;br /&gt;
Falls ihr Anmerkungen zu den Aufgaben habt, könnt ihr die Diskussionsseiten der jeweiligen Aufgaben nutzen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Schwierigkeitsgrade ==&lt;br /&gt;
&lt;br /&gt;
#  Reines Tutorial. Man muss nicht viel selbst denken&lt;br /&gt;
#  ...&lt;br /&gt;
#  Leichte Übungsaufgabe. Studies, die noch eher unsicher sind werden hier gut begleitet.&lt;br /&gt;
#  ...&lt;br /&gt;
#  Typische Aufgabe. Man muss den Kopf benutzen, bekommt an schwierigen Stellen aber Hilfestellungen.&lt;br /&gt;
#  ...&lt;br /&gt;
#  Herausfordernd, eher etwas für Studies die etwas fitter sind.&lt;br /&gt;
#  ...&lt;br /&gt;
#  Auch erfahrene Programmierer werden hier ein bis zwei Übungen beschäftigt sein&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
#  Tja, die Idee war da. Wir finden sie auch gut, aber es könnte wirklich anstrengend werden.&lt;br /&gt;
&lt;br /&gt;
== Die Aufgaben ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;2&amp;quot;&lt;br /&gt;
 |- bgcolor=&amp;quot;#D8D8D8&amp;quot;&lt;br /&gt;
 !Aufgabe&lt;br /&gt;
 !Schwierigkeit&lt;br /&gt;
 !Vorwissen&lt;br /&gt;
 !Lerneffekte&lt;br /&gt;
 !Bearbeiter&lt;br /&gt;
 !Korrektur gelesen&lt;br /&gt;
 !Musterlösung&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Von der Konsole zum HelloWorld | Von der Konsole zum HelloWorld]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |1&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |1. VL&lt;br /&gt;
 | Konsole benutzen, Hello World&lt;br /&gt;
 | Sebastian D.&lt;br /&gt;
 | [[Benutzer:Mario|Mario]] (2009), &lt;br /&gt;
 | &lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Fakultät | Fakultät]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |1. VL&lt;br /&gt;
 | Schleifen&lt;br /&gt;
 | Sebastian D.&lt;br /&gt;
 | Daniel (2009), &lt;br /&gt;
 |  &lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Base64 | Base64]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |6&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |1. VL&lt;br /&gt;
 | Operatoren&lt;br /&gt;
 | Sebastian D.&lt;br /&gt;
 | Paul(2010)&lt;br /&gt;
 | [[Ckurs2009/Base64/Musterlösung | Base64]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/EingabeAusgabe | Ein- und Ausgabe]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |1&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2. VL&lt;br /&gt;
 | Einlesen von Benutzereingaben&amp;lt;br&amp;gt;Ausgabe derselben&lt;br /&gt;
 | [[Benutzer:Mario|Mario]]&lt;br /&gt;
 | nion (2009), &lt;br /&gt;
 | [[Ckurs2009/EingabeAusgabe/Musterlösung | Ein- und Ausgabe]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Taschenrechner | Taschenrechner]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2. VL&lt;br /&gt;
 | Eingabe+Ausgabe&amp;lt;br&amp;gt;Mathematische Operatoren&lt;br /&gt;
 | [[Benutzer:Mario|Mario]]&lt;br /&gt;
 | [[Benutzer:Tkroenert|TKroenert]] (2009), &lt;br /&gt;
 | [[Ckurs2009/Taschenrechner/Musterlösung | Taschenrechner]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/VerschachtelteSchleifen | Verschachtelte Schleifen]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2. VL&lt;br /&gt;
 | Umgang mit mehreren verschachtelten Schleifen&lt;br /&gt;
 | [[Benutzer:Dank|Daniel K.]]&lt;br /&gt;
 | AlexanderK (2009), &lt;br /&gt;
 |&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Glückspiel | Glücksspiel]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2. VL&lt;br /&gt;
 | Anwenden von Fallunterscheidungen und Einlesen von Werten aus der Konsole&lt;br /&gt;
 | [[Benutzer:Dank|Daniel K.]]&lt;br /&gt;
 | AlexanderK (2009), &lt;br /&gt;
 | [[Ckurs2009/Glückspiel/Musterlösung | Glückspiel]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Wochentag | Wochentagsrechnung]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2. VL&lt;br /&gt;
 | Einlesen von Benutzereingaben&amp;lt;br&amp;gt;Mathematikverständniss&lt;br /&gt;
 | [[Benutzer:Mario|Mario]]&lt;br /&gt;
 | nion (Musterlösung noch nicht vorhanden)  (2009), &lt;br /&gt;
 | &lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Taschenrechner2.0 | Taschenrechner ''2.0'']]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |8&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2. VL&lt;br /&gt;
 | Knobeln&amp;lt;br&amp;gt;Komplexes Aufgaben lösen&lt;br /&gt;
 | [[Benutzer:Mario|Mario]]&lt;br /&gt;
 | Martin K. (2009), &lt;br /&gt;
 | [[Ckurs2009/Taschenrechner2.0/Musterlösung | Taschenrechner ''2.0'']]&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Call by reference | Call by reference]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Einfache Anwendung von &amp;amp;/*&lt;br /&gt;
 | sping&lt;br /&gt;
 | nion (2009), &lt;br /&gt;
 | [[Ckurs2009/Call by reference/Musterlösung | Call by reference]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Text processing | Text processing]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4, 6&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Strings&amp;lt;br&amp;gt;Pointer-Arithmetik&amp;lt;br&amp;gt;Pointer auf Pointer&amp;lt;br&amp;gt;Refactoring&lt;br /&gt;
 | sping&lt;br /&gt;
 | [[Benutzer:Mario|Mario]] (2009), &lt;br /&gt;
 | [[Ckurs2009/Text processing/Musterlösung | Text processing]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Palindrome | Palindrome]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Pointer und Strings&lt;br /&gt;
 | [[Benutzer:Dank|Daniel K.]]&lt;br /&gt;
 | nion (2009), &lt;br /&gt;
 | [[Ckurs2009/Palindrome/Musterlösung | Palindrome ]]&lt;br /&gt;
 | &lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/(Pointer) Swapping | (Pointer) Swapping]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Pointer und Arrays benutzen, generisches swap&lt;br /&gt;
 | Katrin&lt;br /&gt;
 |&lt;br /&gt;
 | [[Ckurs2009/(Pointer) Swapping/Musterlösung | (Pointer) Swapping]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Matrizenmultiplikation | Matrizenmultiplikation]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |6&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Mehrdimensionale Arrays&amp;lt;br&amp;gt;const correctness&lt;br /&gt;
 | sping&lt;br /&gt;
 | [[Benutzer:Mario|Mario]] (2009), &lt;br /&gt;
 | [[Ckurs2009/Matrizenmultiplikation/Musterlösung | Matrizenmultiplikation]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Arrayuebergabe | Arrayuebergabe]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4/5&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4. VL&lt;br /&gt;
 | Einlesen von Benutzereingaben&amp;lt;br&amp;gt;Pointer und Pointerarithmetik&lt;br /&gt;
 | nion&lt;br /&gt;
 | Martin K. (2009), &lt;br /&gt;
 | [[Ckurs2009/Arrayuebergabe/Musterlösung | Arrayuebergabe]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Studentendatenbank | Studentendatenbank]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4. VL&lt;br /&gt;
 | struct, Pointer, Arrays&lt;br /&gt;
 | AlexanderK&lt;br /&gt;
 |&lt;br /&gt;
 | [[Ckurs2009/Studentendatenbank/Musterlösung | Studentendatenbank]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Sammelbestellung | Sammelbestellung]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2-5&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4. VL&lt;br /&gt;
 | Listen, Pointer, Speicherverwaltung&lt;br /&gt;
 | Florian S.&lt;br /&gt;
 | [[Benutzer:Mario|Mario]] (2009), &lt;br /&gt;
 |  [[Ckurs2009/Sammelbestellung/Musterlösung | Sammelbestellung]] &lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Zahlen_sagen | Zahlen sagen]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4. VL&lt;br /&gt;
 | Umgang mit Zeichenketten&lt;br /&gt;
 | Martin K.&lt;br /&gt;
 | &lt;br /&gt;
 | [[Ckurs2009/Zahlen_sagen/Musterlösung | Zahlen sagen]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Compiler, Präprozessor, Header Files | Compiler, Präprozessor, Header Files]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5. VL&lt;br /&gt;
 | Arbeiten mit mehreren Quellcode-Dateien, Kompilieren und Linken, Header-Dateien und #include, debugging-Makro verwenden&lt;br /&gt;
 | Katrin&lt;br /&gt;
 | &lt;br /&gt;
 | [https://wiki.freitagsrunde.org/Ckurs2009/Vortrag05 siehe Folien]&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Bus Error | Bus Error]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |8&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5. VL&lt;br /&gt;
 | Pointer, wie entsteht ein bus error&lt;br /&gt;
 | Katrin&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/BubbleSortDebug | BubbleSort Debugging]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |6. VL&lt;br /&gt;
 | Debuggen eines Programmes mit gdb&lt;br /&gt;
 | aeichner&lt;br /&gt;
 |&lt;br /&gt;
 | [[Ckurs2009/BubbleSortDebug/Musterlösung | BubbleSort Debugging]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Debug | Debugging]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |1-8&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |6. VL&lt;br /&gt;
 | Debuggen einer Anwendung nach Wahl&lt;br /&gt;
 | aeichner&lt;br /&gt;
 |&lt;br /&gt;
 | &lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Code Layout | Code Layout]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |7. VL&lt;br /&gt;
 | Kleinere Codeschipsel mit kleinen Unsauberkeiten&lt;br /&gt;
 | Daniel&lt;br /&gt;
 | [[Benutzer:Tkroenert|TKroenert]] (2010)&lt;br /&gt;
 | [[Ckurs2009/Code Layout/Musterlösung | Code Layout]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Refactoring | Refactoring]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5-9&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |7. VL&lt;br /&gt;
 | Wie verbessere ich den Quellcode eines Programmes.&lt;br /&gt;
 | Daniel&lt;br /&gt;
 | &lt;br /&gt;
 | [[Ckurs2009/Refactoring/Musterlösung | Refactoring]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Cat | Cat]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |6&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2. VL&lt;br /&gt;
 | Arbeiten mit Dateien&amp;lt;br&amp;gt;Kommandozeilenparameter&lt;br /&gt;
 | nion&lt;br /&gt;
 | sping (2009), &lt;br /&gt;
 | vorhanden&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Pong | Pong]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |7&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |9.VL (eigentlich 2.VL)&lt;br /&gt;
 | allgemeiner Programmablauf, fortgeschrittene Konsolenausgaben/eingaben&lt;br /&gt;
 | AlexanderK&lt;br /&gt;
 |&lt;br /&gt;
 | vorhanden &lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Buchhaltung | Buchhaltung]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |6&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5.VL&lt;br /&gt;
 | Lesen aus Dateien&lt;br /&gt;
 | reiner&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/StringArraySortieren | StringArraySortieren]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |8&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Konsolparameter, Funktionspointer, stdlib&lt;br /&gt;
 | reiner&lt;br /&gt;
 |&lt;br /&gt;
 | vorhanden&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs/integral | integral]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Funktionspointer&lt;br /&gt;
 | reiner&lt;br /&gt;
 | [[Benutzer:Tkroenert|TKroenert]] (2010)&lt;br /&gt;
 | [[Ckurs/integral/Musterlösung | Musterloesung]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs/forschleife | forschleife]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |6. VL&lt;br /&gt;
 | Bug (zum Knobeln)&lt;br /&gt;
 | reiner&lt;br /&gt;
 | nion (2009), [[Benutzer:Tkroenert|TKroenert]] (2010)&lt;br /&gt;
 | vorhanden&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs/libgdsl | GDSL]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5-7&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |9. VL&lt;br /&gt;
 | Anwendung der Generic Data Structures Library&lt;br /&gt;
 | martin&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/StdLib | Standard C Library]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |9. VL&lt;br /&gt;
 | Recherche in der Standard C Bibliothek&lt;br /&gt;
 | martin&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Kleine und große Probleme ==&lt;br /&gt;
&lt;br /&gt;
* Die Tubit-Accounts haben nicht /bin/bash als shell, so dass die &amp;lt;strong&amp;gt;Cursortasten&amp;lt;/strong&amp;gt; nicht funktionieren. Workaround: als erstes Kommando 'bash' eingeben, man sieht dann auch in welchem Verzeichnis man gerade ist.&lt;br /&gt;
* wenn man nur den Promt 'bash-0.12' oder so erhält, also ohne das Verzeichnis in dem man ist, folgendes Kommando eingeben: &amp;lt;tt&amp;gt;export PS1='\u@\h:\w$ '&amp;lt;/tt&amp;gt; oder zum dauerhaften Speichern: &amp;lt;tt&amp;gt; echo &amp;quot;export PS1='\u@\h:\w$ '&amp;quot; &amp;gt;&amp;gt; ~/.bashrc &amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Musterlösungen ==&lt;br /&gt;
Die Lösungen zu den Aufgaben werden nach den jeweiligen Übungen hier veröffentlicht. Falls dies nicht geschieht, bitte den zuständigen Tutor fragen.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[Ckurs2009/Feedback|Feedback zum Kurs 2009]]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:CKurs]]&lt;br /&gt;
[[Kategorie:CKurs Aufgaben]]&lt;/div&gt;</summary>
		<author><name>P.brodmann</name></author>
		
	</entry>
</feed>