<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki.stageing.freitagsrunde.org//api.php?action=feedcontributions&amp;feedformat=atom&amp;user=85.179.5.52</id>
	<title>FreitagsrundenWiki - Benutzerbeiträge [de]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.stageing.freitagsrunde.org//api.php?action=feedcontributions&amp;feedformat=atom&amp;user=85.179.5.52"/>
	<link rel="alternate" type="text/html" href="wiki.stageing.freitagsrunde.org//Spezial:Beitr%C3%A4ge/85.179.5.52"/>
	<updated>2026-10-29T14:39:40Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.45.6</generator>
	<entry>
		<id>wiki.stageing.freitagsrunde.org//index.php?title=C-Kurs/%C3%9Cbungsaufgaben&amp;diff=12297</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=12297"/>
		<updated>2009-09-17T02:31:17Z</updated>

		<summary type="html">&lt;p&gt;85.179.5.52: /* 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;#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;
 | &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/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;
 |&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;
 |&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;
 |&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;
 |&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;
 |&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; |...&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;
 |&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 &#039;bash&#039; eingeben, man sieht dann auch in welchem Verzeichnis man gerade ist.&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 geschiet, bitte den zuständigen Tutor fragen.&lt;br /&gt;
&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>85.179.5.52</name></author>
	</entry>
	<entry>
		<id>wiki.stageing.freitagsrunde.org//index.php?title=C-Kurs/Matrizenmultiplikation/Musterl%C3%B6sung&amp;diff=12296</id>
		<title>C-Kurs/Matrizenmultiplikation/Musterlösung</title>
		<link rel="alternate" type="text/html" href="wiki.stageing.freitagsrunde.org//index.php?title=C-Kurs/Matrizenmultiplikation/Musterl%C3%B6sung&amp;diff=12296"/>
		<updated>2009-09-17T02:30:04Z</updated>

		<summary type="html">&lt;p&gt;85.179.5.52: Die Seite wurde neu angelegt: „ #include &amp;lt;stdio.h&amp;gt;  #include &amp;lt;assert.h&amp;gt;    void mult(          const int * const *a,          const int * const *b,          int * const *result,          int ro...“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; #include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;assert.h&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 void mult(&lt;br /&gt;
         const int * const *a,&lt;br /&gt;
         const int * const *b,&lt;br /&gt;
         int * const *result,&lt;br /&gt;
         int rows_a,&lt;br /&gt;
         int cols_a,&lt;br /&gt;
         int cols_b) {&lt;br /&gt;
     int row = 0;&lt;br /&gt;
     for (; row &amp;lt; rows_a; ++row) {&lt;br /&gt;
         int col = 0;&lt;br /&gt;
         for (; col &amp;lt; cols_b; ++col) {&lt;br /&gt;
             int i = 0;&lt;br /&gt;
             result[row][col] = 0;&lt;br /&gt;
             for (; i &amp;lt; cols_a; ++i) {&lt;br /&gt;
                 result[row][col] += a[row][i] * b[i][col];&lt;br /&gt;
             }&lt;br /&gt;
         }&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 int main() {&lt;br /&gt;
     const int a0[] = {1, 0};&lt;br /&gt;
     const int a1[] = {4, 3};&lt;br /&gt;
     const int a2[] = {2, 5};&lt;br /&gt;
     const int *a[] = {a0, a1, a2};&lt;br /&gt;
 &lt;br /&gt;
     const int b0[] = {6, 3, 4, 2};&lt;br /&gt;
     const int b1[] = {7, 1, 0, 5};&lt;br /&gt;
     const int *b[] = {b0, b1};&lt;br /&gt;
 &lt;br /&gt;
     int c0[4], c1[4], c2[4];&lt;br /&gt;
     int * const result[] = {c0, c1, c2};&lt;br /&gt;
 &lt;br /&gt;
     const int d0[] = { 6,  3,  4,  2};&lt;br /&gt;
     const int d1[] = {45, 15, 16, 23};&lt;br /&gt;
     const int d2[] = {47, 11,  8, 29};&lt;br /&gt;
     const int * const expected[] = {d0, d1, d2};&lt;br /&gt;
 &lt;br /&gt;
     int row = 0;&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
     mult(a, b, result,&lt;br /&gt;
             sizeof(a) / sizeof(int *),&lt;br /&gt;
             sizeof(a0) / sizeof(int),&lt;br /&gt;
             sizeof(b0) / sizeof(int));&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
     /* Print result, compare against expected values */&lt;br /&gt;
     for (; row &amp;lt; sizeof(result) / sizeof(int *); ++row) {&lt;br /&gt;
         int col = 0;&lt;br /&gt;
         for (; col &amp;lt; sizeof(c0) / sizeof(int); ++col) {&lt;br /&gt;
             printf(&amp;quot;%2d &amp;quot;, result[row][col]);&lt;br /&gt;
             assert(result[row][col] == expected[row][col]);&lt;br /&gt;
         }&lt;br /&gt;
         printf(&amp;quot;\n&amp;quot;);&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     return 0;&lt;br /&gt;
 }&lt;/div&gt;</summary>
		<author><name>85.179.5.52</name></author>
	</entry>
	<entry>
		<id>wiki.stageing.freitagsrunde.org//index.php?title=C-Kurs/Matrizenmultiplikation&amp;diff=12295</id>
		<title>C-Kurs/Matrizenmultiplikation</title>
		<link rel="alternate" type="text/html" href="wiki.stageing.freitagsrunde.org//index.php?title=C-Kurs/Matrizenmultiplikation&amp;diff=12295"/>
		<updated>2009-09-17T02:28:18Z</updated>

		<summary type="html">&lt;p&gt;85.179.5.52: /* Aufgabe */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Aufgabe =&lt;br /&gt;
&lt;br /&gt;
Schreibe eine Funktion &amp;lt;tt&amp;gt;mult&amp;lt;/tt&amp;gt; die zwei beliebig große (aber zueinander passende) [http://en.wikipedia.org/wiki/Matrix_multiplication Matrizen miteinander mulipliziert].&amp;lt;br&amp;gt;&lt;br /&gt;
Der Prototyp der Funktion &amp;lt;tt&amp;gt;mult&amp;lt;/tt&amp;gt; soll sein:&lt;br /&gt;
&lt;br /&gt;
 void mult(&lt;br /&gt;
     const int * const *a,&lt;br /&gt;
     const int * const *b,&lt;br /&gt;
     int * const *result,&lt;br /&gt;
     int rows_a,&lt;br /&gt;
     int cols_a,&lt;br /&gt;
     int cols_b);&lt;br /&gt;
&lt;br /&gt;
Verdeutliche dir zuerst, welches &amp;lt;tt&amp;gt;const&amp;lt;/tt&amp;gt; welche Wirkung hat, und &lt;br /&gt;
&lt;br /&gt;
Zum Testen kannst du folgende drei Arrays benutzen:&lt;br /&gt;
&lt;br /&gt;
 const int a0[] = {1, 0};&lt;br /&gt;
 const int a1[] = {4, 3};&lt;br /&gt;
 const int a2[] = {2, 5};&lt;br /&gt;
 const int *a[] = {a0, a1, a2};&lt;br /&gt;
 &lt;br /&gt;
 const int b0[] = {6, 3, 4, 2};&lt;br /&gt;
 const int b1[] = {7, 1, 0, 5};&lt;br /&gt;
 const int *b[] = {b0, b1};&lt;br /&gt;
 &lt;br /&gt;
 int c0[4], c1[4], c2[4];&lt;br /&gt;
 int * const result[] = {c0, c1, c2};&lt;br /&gt;
&lt;br /&gt;
Ein viertes Array &amp;lt;tt&amp;gt;expected&amp;lt;/tt&amp;gt; zum Vergleichen der Ergebnisse fehlt aber noch...&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Tipp&#039;&#039;&#039;: Die Lösung enthält die Zahlen 15 und 16 in der Mitte.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Viel Spaß und Erfolg!&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>85.179.5.52</name></author>
	</entry>
	<entry>
		<id>wiki.stageing.freitagsrunde.org//index.php?title=C-Kurs/%C3%9Cbungsaufgaben&amp;diff=12294</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=12294"/>
		<updated>2009-09-17T02:06:42Z</updated>

		<summary type="html">&lt;p&gt;85.179.5.52: /* 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;#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;
 | &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/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;
 |&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;
 |&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;
 |&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;
 |&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;
 |&lt;br /&gt;
 | &lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Arrayuebergabe | Arrayuebergabe]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |...&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;
 |&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 &#039;bash&#039; eingeben, man sieht dann auch in welchem Verzeichnis man gerade ist.&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 geschiet, bitte den zuständigen Tutor fragen.&lt;br /&gt;
&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>85.179.5.52</name></author>
	</entry>
	<entry>
		<id>wiki.stageing.freitagsrunde.org//index.php?title=C-Kurs/Text_processing/Musterl%C3%B6sung&amp;diff=12293</id>
		<title>C-Kurs/Text processing/Musterlösung</title>
		<link rel="alternate" type="text/html" href="wiki.stageing.freitagsrunde.org//index.php?title=C-Kurs/Text_processing/Musterl%C3%B6sung&amp;diff=12293"/>
		<updated>2009-09-17T02:05:46Z</updated>

		<summary type="html">&lt;p&gt;85.179.5.52: Die Seite wurde neu angelegt: „ #include &amp;lt;stdio.h&amp;gt;    #include &amp;lt;assert.h&amp;gt;  #include &amp;lt;string.h&amp;gt;    void  write_and_advance(char **write, const char *text) {      strcpy(*write, text);      *writ...“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; #include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 #include &amp;lt;assert.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;string.h&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 void&lt;br /&gt;
 write_and_advance(char **write, const char *text) {&lt;br /&gt;
     strcpy(*write, text);&lt;br /&gt;
     *write += strlen(text);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 int&lt;br /&gt;
 copy_escape_xml(char *output, const char *input) {&lt;br /&gt;
     const char *read = input;&lt;br /&gt;
     char *write = output;&lt;br /&gt;
 &lt;br /&gt;
     assert(input != NULL);&lt;br /&gt;
     assert(output != NULL);&lt;br /&gt;
 &lt;br /&gt;
     for (;;) {&lt;br /&gt;
         switch (read[0]) {&lt;br /&gt;
         case &#039;\0&#039;:&lt;br /&gt;
             write[0] = &#039;\0&#039;;&lt;br /&gt;
             return write - output;  /* == strlen(output) */&lt;br /&gt;
         case &#039;&amp;amp;&#039;:&lt;br /&gt;
             write_and_advance(&amp;amp;write, &amp;quot;&amp;amp;amp;amp;&amp;quot;);&lt;br /&gt;
             break;&lt;br /&gt;
         case &#039;&amp;lt;&#039;:&lt;br /&gt;
             write_and_advance(&amp;amp;write, &amp;quot;&amp;amp;amp;lt;&amp;quot;);&lt;br /&gt;
             break;&lt;br /&gt;
         case &#039;&amp;gt;&#039;:&lt;br /&gt;
             write_and_advance(&amp;amp;write, &amp;quot;&amp;amp;amp;gt;&amp;quot;);&lt;br /&gt;
             break;&lt;br /&gt;
         case &#039;\&#039;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&#039;:&lt;br /&gt;
             write_and_advance(&amp;amp;write, &amp;quot;&amp;amp;amp;apos;&amp;quot;);&lt;br /&gt;
             break;&lt;br /&gt;
         case &#039;&amp;quot;&#039;:&lt;br /&gt;
             write_and_advance(&amp;amp;write, &amp;quot;&amp;amp;amp;quot;&amp;quot;);&lt;br /&gt;
             break;&lt;br /&gt;
         default:&lt;br /&gt;
             *(write++) = read[0];&lt;br /&gt;
         }&lt;br /&gt;
         read++;&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void&lt;br /&gt;
 single_slashes(char *input_output) {&lt;br /&gt;
     const char *read = input_output;&lt;br /&gt;
     char *write = input_output;&lt;br /&gt;
 &lt;br /&gt;
     assert(input_output != NULL);&lt;br /&gt;
 &lt;br /&gt;
     for (;;) {&lt;br /&gt;
         switch (read[0]) {&lt;br /&gt;
         case &#039;\0&#039;:&lt;br /&gt;
             write[0] = &#039;\0&#039;;&lt;br /&gt;
             return;&lt;br /&gt;
         case &#039;/&#039;:&lt;br /&gt;
             {&lt;br /&gt;
                 /* Advance after last slash in sequence */&lt;br /&gt;
                 read++;&lt;br /&gt;
                 while (read[0] == &#039;/&#039;) {&lt;br /&gt;
                     read++;&lt;br /&gt;
                 }&lt;br /&gt;
                 write[0] = &#039;/&#039;;&lt;br /&gt;
                 write++;&lt;br /&gt;
                 break;&lt;br /&gt;
             }&lt;br /&gt;
         default:&lt;br /&gt;
             *(write++) = read[0];&lt;br /&gt;
             read++;&lt;br /&gt;
         }&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 int&lt;br /&gt;
 main() {&lt;br /&gt;
     char escape_input[] = &amp;quot;Kernighan &amp;amp;amp; Ritchie&amp;quot;;&lt;br /&gt;
     char escape_output[255];&lt;br /&gt;
     char slash_input_output[] = &amp;quot;/usr//bin///env&amp;quot;;&lt;br /&gt;
     copy_escape_xml(escape_output, escape_input);&lt;br /&gt;
     single_slashes(slash_input_output);&lt;br /&gt;
 &lt;br /&gt;
     printf(&amp;quot;copy_escape_xml --&amp;gt; \&amp;quot;%s\&amp;quot;\n&amp;quot;, escape_output);&lt;br /&gt;
     printf(&amp;quot;single_slashes --&amp;gt; \&amp;quot;%s\&amp;quot;\n&amp;quot;, slash_input_output);&lt;br /&gt;
 &lt;br /&gt;
     return 0;&lt;br /&gt;
 }&lt;/div&gt;</summary>
		<author><name>85.179.5.52</name></author>
	</entry>
	<entry>
		<id>wiki.stageing.freitagsrunde.org//index.php?title=C-Kurs/Text_processing&amp;diff=12292</id>
		<title>C-Kurs/Text processing</title>
		<link rel="alternate" type="text/html" href="wiki.stageing.freitagsrunde.org//index.php?title=C-Kurs/Text_processing&amp;diff=12292"/>
		<updated>2009-09-17T01:47:40Z</updated>

		<summary type="html">&lt;p&gt;85.179.5.52: /* Vorgabe */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Vorgabe ==&lt;br /&gt;
Folgender Code zum Escaping von XML ist gegeben:&lt;br /&gt;
&lt;br /&gt;
 #include &amp;lt;assert.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;string.h&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 int&lt;br /&gt;
 copy_escape_xml(char *output, const char *input) {&lt;br /&gt;
     const char *read = input;&lt;br /&gt;
     char *write = output;&lt;br /&gt;
 &lt;br /&gt;
     assert(input != NULL);&lt;br /&gt;
     assert(output != NULL);&lt;br /&gt;
 &lt;br /&gt;
     for (;;) {&lt;br /&gt;
         switch (read[0]) {&lt;br /&gt;
         case &#039;\0&#039;:&lt;br /&gt;
             write[0] = &#039;\0&#039;;&lt;br /&gt;
             return write - output;  /* == strlen(output) */&lt;br /&gt;
         case &#039;&amp;amp;&#039;:&lt;br /&gt;
             strcpy(write, &amp;quot;&amp;amp;amp;amp;&amp;quot;);&lt;br /&gt;
             write += 5;&lt;br /&gt;
             break;&lt;br /&gt;
         case &#039;&amp;lt;&#039;:&lt;br /&gt;
             strcpy(write, &amp;quot;&amp;amp;amp;lt;&amp;quot;);&lt;br /&gt;
             write += 4;&lt;br /&gt;
             break;&lt;br /&gt;
         case &#039;&amp;gt;&#039;:&lt;br /&gt;
             strcpy(write, &amp;quot;&amp;amp;amp;gt;&amp;quot;);&lt;br /&gt;
             write += 4;&lt;br /&gt;
             break;&lt;br /&gt;
         case &#039;\&#039;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&#039;:&lt;br /&gt;
             strcpy(write, &amp;quot;&amp;amp;amp;apos;&amp;quot;);&lt;br /&gt;
             write += 6;&lt;br /&gt;
             break;&lt;br /&gt;
         case &#039;&amp;quot;&#039;:&lt;br /&gt;
             strcpy(write, &amp;quot;&amp;amp;amp;quot;&amp;quot;);&lt;br /&gt;
             write += 6;&lt;br /&gt;
             break;&lt;br /&gt;
         default:&lt;br /&gt;
             *(write++) = read[0];&lt;br /&gt;
         }&lt;br /&gt;
         read++;&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== Aufgaben ==&lt;br /&gt;
&lt;br /&gt;
=== Anwendung ===&lt;br /&gt;
Finde heraus, was die Funktion &amp;lt;tt&amp;gt;copy_escape_xml&amp;lt;/tt&amp;gt; aus dem String &amp;lt;tt&amp;gt;&amp;quot;Kernighan &amp;amp; Ritchie&amp;quot;&amp;lt;/tt&amp;gt; macht und schreibe eine Test-Funktion für diesen Fall.&lt;br /&gt;
&lt;br /&gt;
=== Refactoring ===&lt;br /&gt;
Extrahiere eine Methode aus den Blöcken mit&lt;br /&gt;
&lt;br /&gt;
 strcpy(write, &amp;quot;...&amp;quot;);&lt;br /&gt;
 write += ...;&lt;br /&gt;
&lt;br /&gt;
um Code Duplication zu reduzieren.  Nutze die Test-Funktion um sicherzustellen, dass der Code nach deinem Refactoring noch funktioniert.&lt;br /&gt;
&lt;br /&gt;
=== In-place ===&lt;br /&gt;
Schreibe eine Methode &amp;lt;tt&amp;gt;single_slashes&amp;lt;/tt&amp;gt;, die Folgen von Schrägstrichen durch einzelne Schrägstriche ersetzt.&lt;br /&gt;
Aus &amp;quot;/usr//bin///env&amp;quot; soll &amp;quot;/usr/bin/env&amp;quot; werden.&lt;br /&gt;
&lt;br /&gt;
Da die Strings dabei nicht länger werden können, bietet sich hier an, &amp;quot;in place&amp;quot; (auf demselben String) zu arbeiten.&amp;lt;br&amp;gt;&lt;br /&gt;
Der Prototyp von &amp;lt;tt&amp;gt;single_slashes&amp;lt;/tt&amp;gt; sollte sein:&lt;br /&gt;
&lt;br /&gt;
 void single_slashes(char *input_output);&lt;br /&gt;
&lt;br /&gt;
Auch hier kann die Verwendung von Lese- und Schreibköpfen (ähnlich &amp;lt;tt&amp;gt;copy_escape_xml&amp;lt;/tt&amp;gt; oben) praktisch sein.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Viel Spaß und Erfolg!&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>85.179.5.52</name></author>
	</entry>
	<entry>
		<id>wiki.stageing.freitagsrunde.org//index.php?title=C-Kurs/Text_processing&amp;diff=12291</id>
		<title>C-Kurs/Text processing</title>
		<link rel="alternate" type="text/html" href="wiki.stageing.freitagsrunde.org//index.php?title=C-Kurs/Text_processing&amp;diff=12291"/>
		<updated>2009-09-17T01:46:05Z</updated>

		<summary type="html">&lt;p&gt;85.179.5.52: /* Vorgabe */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Vorgabe ==&lt;br /&gt;
Folgender Code zum Escaping von XML ist gegeben:&lt;br /&gt;
&lt;br /&gt;
 #include &amp;lt;assert.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;string.h&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 int&lt;br /&gt;
 copy_escape_xml(char *output, const char *input) {&lt;br /&gt;
     const char *read = input;&lt;br /&gt;
     char *write = output;&lt;br /&gt;
 &lt;br /&gt;
     assert(input != NULL);&lt;br /&gt;
     assert(output != NULL);&lt;br /&gt;
 &lt;br /&gt;
     for (;;) {&lt;br /&gt;
         switch (read[0]) {&lt;br /&gt;
         case &#039;\0&#039;:&lt;br /&gt;
             write[0] = &#039;\0&#039;;&lt;br /&gt;
             return write - output;  /* == strlen(output) */&lt;br /&gt;
         case &#039;&amp;amp;&#039;:&lt;br /&gt;
             strcpy(write, &amp;quot;&amp;amp;amp;amp;&amp;quot;);&lt;br /&gt;
             write += 5;&lt;br /&gt;
             break;&lt;br /&gt;
         case &#039;&amp;lt;&#039;:&lt;br /&gt;
             strcpy(write, &amp;quot;&amp;amp;amp;lt;&amp;quot;);&lt;br /&gt;
             write += 4;&lt;br /&gt;
             break;&lt;br /&gt;
         case &#039;&amp;gt;&#039;:&lt;br /&gt;
             strcpy(write, &amp;quot;&amp;amp;amp;gt;&amp;quot;);&lt;br /&gt;
             write += 4;&lt;br /&gt;
             break;&lt;br /&gt;
         case &#039;\&#039;&#039;:&lt;br /&gt;
             strcpy(write, &amp;quot;&amp;amp;amp;apos;&amp;quot;);&lt;br /&gt;
             write += 6;&lt;br /&gt;
             break;&lt;br /&gt;
         case &#039;&amp;quot;&#039;:&lt;br /&gt;
             strcpy(write, &amp;quot;&amp;amp;amp;quot;&amp;quot;);&lt;br /&gt;
             write += 6;&lt;br /&gt;
             break;&lt;br /&gt;
         default:&lt;br /&gt;
             *(write++) = read[0];&lt;br /&gt;
         }&lt;br /&gt;
         read++;&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== Aufgaben ==&lt;br /&gt;
&lt;br /&gt;
=== Anwendung ===&lt;br /&gt;
Finde heraus, was die Funktion &amp;lt;tt&amp;gt;copy_escape_xml&amp;lt;/tt&amp;gt; aus dem String &amp;lt;tt&amp;gt;&amp;quot;Kernighan &amp;amp; Ritchie&amp;quot;&amp;lt;/tt&amp;gt; macht und schreibe eine Test-Funktion für diesen Fall.&lt;br /&gt;
&lt;br /&gt;
=== Refactoring ===&lt;br /&gt;
Extrahiere eine Methode aus den Blöcken mit&lt;br /&gt;
&lt;br /&gt;
 strcpy(write, &amp;quot;...&amp;quot;);&lt;br /&gt;
 write += ...;&lt;br /&gt;
&lt;br /&gt;
um Code Duplication zu reduzieren.  Nutze die Test-Funktion um sicherzustellen, dass der Code nach deinem Refactoring noch funktioniert.&lt;br /&gt;
&lt;br /&gt;
=== In-place ===&lt;br /&gt;
Schreibe eine Methode &amp;lt;tt&amp;gt;single_slashes&amp;lt;/tt&amp;gt;, die Folgen von Schrägstrichen durch einzelne Schrägstriche ersetzt.&lt;br /&gt;
Aus &amp;quot;/usr//bin///env&amp;quot; soll &amp;quot;/usr/bin/env&amp;quot; werden.&lt;br /&gt;
&lt;br /&gt;
Da die Strings dabei nicht länger werden können, bietet sich hier an, &amp;quot;in place&amp;quot; (auf demselben String) zu arbeiten.&amp;lt;br&amp;gt;&lt;br /&gt;
Der Prototyp von &amp;lt;tt&amp;gt;single_slashes&amp;lt;/tt&amp;gt; sollte sein:&lt;br /&gt;
&lt;br /&gt;
 void single_slashes(char *input_output);&lt;br /&gt;
&lt;br /&gt;
Auch hier kann die Verwendung von Lese- und Schreibköpfen (ähnlich &amp;lt;tt&amp;gt;copy_escape_xml&amp;lt;/tt&amp;gt; oben) praktisch sein.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Viel Spaß und Erfolg!&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>85.179.5.52</name></author>
	</entry>
	<entry>
		<id>wiki.stageing.freitagsrunde.org//index.php?title=C-Kurs/Call_by_reference/Musterl%C3%B6sung&amp;diff=12290</id>
		<title>C-Kurs/Call by reference/Musterlösung</title>
		<link rel="alternate" type="text/html" href="wiki.stageing.freitagsrunde.org//index.php?title=C-Kurs/Call_by_reference/Musterl%C3%B6sung&amp;diff=12290"/>
		<updated>2009-09-17T01:40:35Z</updated>

		<summary type="html">&lt;p&gt;85.179.5.52: Die Seite wurde neu angelegt: „ #include &amp;lt;stdio.h&amp;gt;    void swap(int *a, int *b) {      int c = *a;      *a = *b;      *b = c;  }    int main() {      int a = 3;      int b = 4;        printf(&amp;quot;a...“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; #include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 void swap(int *a, int *b) {&lt;br /&gt;
     int c = *a;&lt;br /&gt;
     *a = *b;&lt;br /&gt;
     *b = c;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 int main() {&lt;br /&gt;
     int a = 3;&lt;br /&gt;
     int b = 4;&lt;br /&gt;
 &lt;br /&gt;
     printf(&amp;quot;a = %d, b = %d\n&amp;quot;, a, b);&lt;br /&gt;
     swap(&amp;amp;a, &amp;amp;b);&lt;br /&gt;
     printf(&amp;quot;a = %d, b = %d\n&amp;quot;, a, b);&lt;br /&gt;
 &lt;br /&gt;
     return 0;&lt;br /&gt;
 }&lt;/div&gt;</summary>
		<author><name>85.179.5.52</name></author>
	</entry>
</feed>