<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki.stageing.freitagsrunde.org//api.php?action=feedcontributions&amp;feedformat=atom&amp;user=130.149.242.150</id>
	<title>FreitagsrundenWiki - Benutzerbeiträge [de]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.stageing.freitagsrunde.org//api.php?action=feedcontributions&amp;feedformat=atom&amp;user=130.149.242.150"/>
	<link rel="alternate" type="text/html" href="wiki.stageing.freitagsrunde.org//Spezial:Beitr%C3%A4ge/130.149.242.150"/>
	<updated>2026-10-29T12:40:42Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.45.6</generator>
	<entry>
		<id>wiki.stageing.freitagsrunde.org//index.php?title=C-Kurs/Zahlen_sagen/Musterl%C3%B6sung&amp;diff=12533</id>
		<title>C-Kurs/Zahlen sagen/Musterlösung</title>
		<link rel="alternate" type="text/html" href="wiki.stageing.freitagsrunde.org//index.php?title=C-Kurs/Zahlen_sagen/Musterl%C3%B6sung&amp;diff=12533"/>
		<updated>2009-09-23T08:08:57Z</updated>

		<summary type="html">&lt;p&gt;130.149.242.150: Die Seite wurde neu angelegt: „&amp;lt;pre&amp;gt; #include &amp;lt;stdio.h&amp;gt; #include &amp;lt;stdlib.h&amp;gt; #include &amp;lt;string.h&amp;gt; #include &amp;lt;math.h&amp;gt; #include &amp;lt;limits.h&amp;gt;  /** Größe des Puffers für den Ergebnisstring */ #define...“&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&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] = &#039;\0&#039;;&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>130.149.242.150</name></author>
	</entry>
	<entry>
		<id>wiki.stageing.freitagsrunde.org//index.php?title=C-Kurs/Studentendatenbank&amp;diff=12501</id>
		<title>C-Kurs/Studentendatenbank</title>
		<link rel="alternate" type="text/html" href="wiki.stageing.freitagsrunde.org//index.php?title=C-Kurs/Studentendatenbank&amp;diff=12501"/>
		<updated>2009-09-22T11:05:42Z</updated>

		<summary type="html">&lt;p&gt;130.149.242.150: /* Teil c */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In dieser Aufgabe soll eine kleine Studentendatenbank erstellt werden.&lt;br /&gt;
&lt;br /&gt;
== Aufgaben ==&lt;br /&gt;
&lt;br /&gt;
=== Teil a ===&lt;br /&gt;
Schreibe eine Struktur &amp;lt;tt&amp;gt;student&amp;lt;/tt&amp;gt;, die eine Matrikelnummer, einen Vornamen und einen Nachnamen mit jeweils passenden Datentypen enthält.&lt;br /&gt;
&lt;br /&gt;
=== Teil b ===&lt;br /&gt;
Deklariere einen Pointer auf einen solchen Student und alloziere ihn passend. Initialisiere seine Martrikelnummer, seinen Vornamen und Nachnamen mit sinnvollen Werten.&lt;br /&gt;
Schreibe nun eine Funktion &amp;lt;tt&amp;gt;print_student&amp;lt;/tt&amp;gt;, die einen Pointer auf einen Studenten übergeben bekommt und seine Details in einer Zeile ausgeben soll. Teste diese Funktion jetzt mit dem zuvor angelegten Studenten.&lt;br /&gt;
&lt;br /&gt;
=== Teil c ===&lt;br /&gt;
Lege jetzt ein Array von Pointern auf Studenten der Größe 10 an. Initialisiere zunächst alle Elemente mit &amp;lt;tt&amp;gt;NULL&amp;lt;/tt&amp;gt;, damit sich darin keine unvorhersehbaren Studenten befinden. Weise nun dem ersten Element den aus Teil b angelegten Studenten zu.&lt;br /&gt;
Schreibe nun einen Funktion &amp;lt;tt&amp;gt;print_students_db&amp;lt;/tt&amp;gt;, die ein Pointer auf ein Array aus Studenten-Pointern übergeben bekommt, und alle Studenten ausgeben soll. Prüfe dabei, ob das jeweilige Element nicht &amp;lt;tt&amp;gt;NULL&amp;lt;/tt&amp;gt; ist und benutzte dann die vorher geschriebene Funktion &amp;lt;tt&amp;gt;print_student&amp;lt;/tt&amp;gt;. Wende nun die Funktion auf die Studentendatenbank an.&lt;br /&gt;
&lt;br /&gt;
=== Teil d ===&lt;br /&gt;
Lege nun mindestens zwei weitere Studenten in der Datenbank an und lösche den ersten (dabei nicht vergessen, den Speicher wieder freizugeben). Gebe erneut die Studentendatenbank aus und überprüfe das Ergebnis.&lt;br /&gt;
&lt;br /&gt;
=== Teil e ===&lt;br /&gt;
Am Ende wollen wir wieder aufräumen. Schreibe dazu eine Funktion &amp;lt;tt&amp;gt;clear_db&amp;lt;/tt&amp;gt;, die die Studentendatenbank (wieder ein Pointer auf das Studenten-Pointer-Array) übergeben bekommt, und darin alle Einträge, die nicht &amp;lt;tt&amp;gt;NULL&amp;lt;/tt&amp;gt; sind, löscht (also deren Speicher freigibt).&lt;br /&gt;
&lt;br /&gt;
=== Teil f ===&lt;br /&gt;
Schreibe eine Funktion &amp;lt;tt&amp;gt;get_student_index&amp;lt;/tt&amp;gt;, die eine Matrikelnummer und die Studentendatenbank übergeben bekommt. Sie soll die Indexposition im Array zurückgeben, an der der gesuchte Student zu finden ist. Falls es keinen Student gibt, der die Matrikelnummer hat, soll &#039;&#039;-1&#039;&#039; zurückgegeben werden.&lt;br /&gt;
&lt;br /&gt;
Schreibe anschließend eine Funktion &amp;lt;tt&amp;gt;add_student&amp;lt;/tt&amp;gt;, die Matrikelnummer, Vor- und Nachname des hinzuzufügenden Studenten und die Studentendatenbank übergeben bekommt. Benutzte darin die Funktion &amp;lt;tt&amp;gt;get_student_index&amp;lt;/tt&amp;gt;, um sicherzustellen, dass du nicht mehrere Studenten mit derselben Matrikelnummer in der Datenbank hast. Füge den neuen Studenten im Array an der ersten Position, die &amp;lt;tt&amp;gt;NULL&amp;lt;/tt&amp;gt; enthält, ein. Überlege die auch einen passenden Rückgabewert, der angibt, ob der Student erfolgreich eingefügt werden soll.&lt;br /&gt;
&lt;br /&gt;
Teste die Funktion, indem du mindestens drei Studenten einfügst, von denen zwei die gleiche Matrikelnummer haben.&lt;br /&gt;
&lt;br /&gt;
=== Teil g ===&lt;br /&gt;
Schreibe eine Funktion &amp;lt;tt&amp;gt;del_student&amp;lt;/tt&amp;gt;, die eine Matrikelnummer und die Studentendatenbank übergeben bekommt. Sie soll den entsprechenden Studenten löschen. Verwende den Rückgabewert ebenfalls, um erfolgreichen Löschen anzuzeigen.&lt;br /&gt;
&lt;br /&gt;
Teste die Funktion, indem du einen vorher eingefügten Studenten wieder löscht.&lt;br /&gt;
&lt;br /&gt;
=== Zusatzaufgabe ===&lt;br /&gt;
Schreibe jetzt eine menügesteuerte Benutzerschnittstelle, die Hinzufügen und Löschen eines Studenten, und Ausgeben der kompletten Datenbank, ermöglicht.&lt;br /&gt;
&lt;br /&gt;
== Kommentare ==&lt;br /&gt;
Wenn du Anmerkungen zur Aufgabe hast oder Lob und Kritik loswerden möchtest, ist hier die richtige Stelle dafür. Klicke einfach ganz rechts auf &amp;quot;bearbeiten&amp;quot; und schreibe deinen Kommentar direkt ins Wiki. Keine Scheu, es geht nichts kaputt ;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Als kleine Starthilfe folgt ein Beispiel, wie so ein Kommentar formatiert sein könnte. Mit &amp;quot;Vorschau zeigen&amp;quot; kannst du dir ansehen, was deine Änderung bewirken würde, ohne wirklich etwas zu ändern.&lt;br /&gt;
Du musst übrigens außerhalb dieses auskommentieren Bereichs schreiben ;)&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>130.149.242.150</name></author>
	</entry>
	<entry>
		<id>wiki.stageing.freitagsrunde.org//index.php?title=C-Kurs/%C3%9Cbungsaufgaben&amp;diff=12493</id>
		<title>C-Kurs/Übungsaufgaben</title>
		<link rel="alternate" type="text/html" href="wiki.stageing.freitagsrunde.org//index.php?title=C-Kurs/%C3%9Cbungsaufgaben&amp;diff=12493"/>
		<updated>2009-09-22T08:03:35Z</updated>

		<summary type="html">&lt;p&gt;130.149.242.150: /* Die Aufgaben */&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;
{| 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]]&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&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;
 | &lt;br /&gt;
 | vorhanden&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&lt;br /&gt;
 | &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]]&lt;br /&gt;
 | &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&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&lt;br /&gt;
 |&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)&lt;br /&gt;
 | &lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Taschenrechner2.0 | Taschenrechner &#039;&#039;2.0&#039;&#039;]]&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.&lt;br /&gt;
 | &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&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]]&lt;br /&gt;
 | vorhanden&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;
 |&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;
 | vorhanden&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]]&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.&lt;br /&gt;
 | vorhanden&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;
 | vorhanden&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]]&lt;br /&gt;
 | Teilweise vorhanden&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;
 | vorhanden&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;
 | 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/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;
 | &lt;br /&gt;
 |&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;
 | vorhanden&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; | ....&lt;br /&gt;
 | Arbeiten mit Dateien&amp;lt;br&amp;gt;Kommandozeilenparameter&lt;br /&gt;
 | nion&lt;br /&gt;
 | sping&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; | ...&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; | ....&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; | 7&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; | ...&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; | ....&lt;br /&gt;
 | Funktionspointer&lt;br /&gt;
 | reiner&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs/forschleife | forschleife]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; | 2&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; | ...&lt;br /&gt;
 | Bug&lt;br /&gt;
 | reiner&lt;br /&gt;
 | nion&lt;br /&gt;
 | vorhanden&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&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;
 | Bug&lt;br /&gt;
 | aeichner&lt;br /&gt;
 |&lt;br /&gt;
 | vorhanden&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 &#039;bash&#039; eingeben, man sieht dann auch in welchem Verzeichnis man gerade ist.&lt;br /&gt;
* wenn man nur den Promt &#039;bash-0.12&#039; oder so erhält, also ohne das Verzeichnis in dem man ist, folgendes Kommando eingeben: &amp;lt;tt&amp;gt;export PS1=&#039;\u@\h:\w$ &#039;&amp;lt;/tt&amp;gt; oder zum dauerhaften Speichern: &amp;lt;tt&amp;gt; echo &amp;quot;export PS1=&#039;\u@\h:\w$ &#039;&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>130.149.242.150</name></author>
	</entry>
</feed>