Skip to content
Snippets Groups Projects
Commit f1f1ed5f authored by Peter Gerwinski's avatar Peter Gerwinski
Browse files

Links zu den Dateien in Gitlab für alle Übungsaufgaben und Musterlösungen (PDF-Dateien)

parent bcd9f903
No related branches found
No related tags found
No related merge requests found
Showing
with 87 additions and 81 deletions
No preview for this file type
......@@ -34,6 +34,8 @@
\newcommand{\exercise}[1]{\addtocounter{exercise}{1}\subsection*{Aufgabe \arabic{exercise}: #1}}
\newcommand{\solution}{\subsubsection*{Lösung}}
\newcommand{\gitfile}[2]{\href{https://gitlab.cvh-server.de/pgerwinski/hp/raw/master/#1/#2}{\file{#2}}}
\begin{document}
\thispagestyle{empty}
......@@ -58,16 +60,16 @@
\solution
Drei verschiedene richtige Lösungen finden Sie in den Dateien
\file{loesung-1-1.c}, \file{loesung-1-2.c} und \file{loesung-1-3.c}.
\gitfile{20161010}{loesung-1-1.c}, \gitfile{20161010}{loesung-1-2.c} und \gitfile{20161010}{loesung-1-3.c}.
Zum Compilieren von \file{loesung-1-2.c} und \file{loesung-1-3.c}
Zum Compilieren von \gitfile{20161010}{loesung-1-2.c} und \gitfile{20161010}{loesung-1-3.c}
ist mindestens der C99-Standard erforderlich
(in \file{gcc}: Option \lstinline[style=cmd]{-std=c99} mit angeben).
Die Lösung in \file{loesung-1-3.c} ist zwar richtig,
Die Lösung in \gitfile{20161010}{loesung-1-3.c} ist zwar richtig,
aber unnötig kompliziert und daher nicht empfohlen.
Eine \textbf{falsche} Lösung finden Sie in der Datei \file{loesung-1-f4.c}:
Eine \textbf{falsche} Lösung finden Sie in der Datei \gitfile{20161010}{loesung-1-f4.c}:
In der Ausgabe dieses Programms stehen die Faktoren und Ergebnisse
nicht rechtsbündig untereinander.
......@@ -84,16 +86,16 @@
\solution
Zwei verschiedene richtige Lösungen finden Sie in den Dateien
\file{loesung-2-1.c} und \file{loesung-2-2.c}.
\gitfile{20161010}{loesung-2-1.c} und \gitfile{20161010}{loesung-2-2.c}.
Die Lösung in \file{loesung-2-2.c}
Die Lösung in \gitfile{20161010}{loesung-2-2.c}
speichert alle berechneten Zahlen in einem Array,
die in \file{loesung-2-1.c} hingegen
die in \gitfile{20161010}{loesung-2-1.c} hingegen
speichert immer nur maximal drei Zahlen gleichzeitig.
Sofern nicht alle berechneten Zahlen später noch benötigt werden,
ist daher \file{loesung-2-1.c} zu bevorzugen.
ist daher \gitfile{20161010}{loesung-2-1.c} zu bevorzugen.
Wichtig in \file{loesung-2-1.c} ist, daß \lstinline{f0 + f1} berechnet wird,
Wichtig in \gitfile{20161010}{loesung-2-1.c} ist, daß \lstinline{f0 + f1} berechnet wird,
\emph{bevor\/} \lstinline{f0} oder \lstinline{f1} ein neuer Wert zugewiesen wird.
Dies ist nur möglich, weil das Programm
eine zusätzliche Variable (hier: \lstinline{f2}) verwendet.
......@@ -199,24 +201,25 @@
return 0;
}
\end{lstlisting}
In den Dateien \file{loesung-3-1.c} bis \file{loesung-3-3.c}
In den Dateien \gitfile{20161010}{loesung-3-1.c} bis \gitfile{20161010}{loesung-3-3.c}
finden Sie lauffähige Programme, die die o.\,a.\ Funktionen aufrufen.
Beachten Sie, daß die Funktion \emph{vor\/} dem Hauptprogramm
deklariert werden muß, damit das Hauptprogramm sie kennt.
(Es gibt Tricks, mit denen es auch anders geht,
aber was hätten wir in diesem Zusammenhang davon?)
In \file{loesung-3-4.c} und \file{loesung-3-5.c}
In \gitfile{20161010}{loesung-3-4.c} und \gitfile{20161010}{loesung-3-5.c}
findet die Schaltjahr-Prüfung direkt im Hauptprogramm statt.
Dies ist ebenfalls eine richtige Lösung der Aufgabe,
schränkt aber die Wiederverwertbarkeit des Codes ein.
Die Datei \file{loesung-3-4.c} enthält darüberhinaus Codeverdopplungen,
Die Datei \gitfile{20161010}{loesung-3-4.c} enthält darüberhinaus Codeverdopplungen,
nämlich mehrere identische \lstinline{printf()}-Auf"-rufe
an unterschiedlichen Stellen.
Dies ist schlechter Programmierstil ("`Cut-and-paste-Programmierung"').
Die besten Lösungen sind \file{loesung-3-2.c} und \file{loesung-3-3.c}.
Die besten Lösungen sind \gitfile{20161010}{loesung-3-2.c}
und \gitfile{20161010}{loesung-3-3.c}.
Zum Testen:\vspace*{-\medskipamount}
\begin{itemize}\itemsep0pt
......@@ -244,21 +247,4 @@
done
\end{lstlisting}
% \exercise{Hello, world!}
%
% Unter \url{https://gitlab.cvh-server.de/pgerwinski/hp/tree/master/20161010}
% finden Sie (unter anderem)\\
% die Programme \file{test-1.c} bis \file{test-5.c}.
% \begin{itemize}
% \item
% Was bewirken diese Programme?
% \item
% Begründen Sie jeweils, warum sich das Programm
% in der beschriebenen Weise verhält.
% \end{itemize}
% Formulieren Sie Ihre Beschreibungen und Begründungen so,
% daß jemand, der Ihre Klausur korrigiert,
% allein anhand Ihrer Texte erkennen kann,
% daß Sie die Zusammenhänge verstanden haben.
\end{document}
No preview for this file type
......@@ -34,6 +34,8 @@
\newcommand{\exercise}[1]{\addtocounter{exercise}{1}\subsection*{Aufgabe \arabic{exercise}: #1}}
\newcommand{\solution}{\subsubsection*{Lösung}}
\newcommand{\gitfile}[2]{\href{https://gitlab.cvh-server.de/pgerwinski/hp/raw/master/#1/#2}{\file{#2}}}
\begin{document}
\thispagestyle{empty}
......@@ -88,7 +90,7 @@
\item[(b)]
\textbf{Ändern Sie das Programm so, daß es einen "`Countdown"' von 10 bis 0 ausgibt.}
Datei \file{loesung-1.c}:
Datei \gitfile{20161017}{loesung-1.c}:
\begin{lstlisting}[gobble=8]
#include <stdio.h>
......@@ -105,7 +107,8 @@
Unter \url{https://gitlab.cvh-server.de/pgerwinski/hp/tree/master/20161017}
finden Sie (unter anderem)\\
die Programme \file{test-1.c} bis \file{test-3.c}.
die Programme \gitfile{20161017}{test-1.c},
\gitfile{20161017}{test-2.c} und \gitfile{20161017}{test-3.c}.
Was bewirken diese Programme, und warum verhalten sie sich so?
......@@ -113,7 +116,7 @@
\begin{itemize}
\item
\file{test-1.c}
\gitfile{20161017}{test-1.c}
Hinter \lstinline{return} steht ein Ausdruck mit dem
Komma-Operator. Dieser bewirkt, daß der Wert vor dem Komma
......@@ -128,7 +131,7 @@
übergeben und daher \lstinline{return 0} ausgeführt.
\item
\file{test-2.c}
\gitfile{20161017}{test-2.c}
Das Programm gibt die Zeile
\lstinline[style=terminal]{Die Antwort lautet: 42} aus.
......@@ -141,7 +144,7 @@
\lstinline{else}-Zweig.
\item
\file{test-3.c}
\gitfile{20161017}{test-3.c}
Das Programm stürzt mit einer Fehlermeldung
"`Speicherzugriffsfehler"' oder "`Schutzverletzung"' ab.
......@@ -198,7 +201,7 @@
\solution
Datei: \file{loesung-3.c}
Datei: \gitfile{20161017}{loesung-3.c}
\begin{lstlisting}
void factor (int n)
{
......
No preview for this file type
......@@ -33,6 +33,8 @@
\newcounter{exercise}
\newcommand{\exercise}[1]{\addtocounter{exercise}{1}\subsection*{Aufgabe \arabic{exercise}: #1}}
\newcommand{\gitfile}[2]{\href{https://gitlab.cvh-server.de/pgerwinski/hp/raw/master/#1/#2}{\file{#2}}}
\begin{document}
\thispagestyle{empty}
......@@ -65,7 +67,8 @@
Unter \url{https://gitlab.cvh-server.de/pgerwinski/hp/tree/master/20161017}
finden Sie (unter anderem)\\
die Programme \file{test-1.c} bis \file{test-3.c}.
die Programme \gitfile{20161017}{test-1.c},
\gitfile{20161017}{test-2.c} und \gitfile{20161017}{test-3.c}.
Was bewirken diese Programme, und warum verhalten sie sich so?
......
No preview for this file type
......@@ -28,6 +28,8 @@
\newcommand{\exercise}[1]{\addtocounter{exercise}{1}\subsection*{Aufgabe \arabic{exercise}: #1}}
\newcommand{\solution}{\subsubsection*{Lösung}}
\newcommand{\gitfile}[2]{\href{https://gitlab.cvh-server.de/pgerwinski/hp/raw/master/#1/#2}{\file{#2}}}
\begin{document}
% \thispagestyle{empty}
......@@ -68,7 +70,7 @@
\solution
Datei \file{loesung-1.c}:
Datei \gitfile{20161024}{loesung-1.c}:
\begin{lstlisting}
#include <stdio.h>
......@@ -141,7 +143,7 @@
\exercise{Programm analysieren}
Wir betrachten das folgende C-Programm (Datei: \file{aufgabe-2.c}):
Wir betrachten das folgende C-Programm (Datei: \gitfile{20161024}{aufgabe-2.c}):
\begin{lstlisting}
char*f="char*f=%c%s%c;main(){printf(f,34,f,34,10);}%c";main(){printf(f,34,f,34,10);}
\end{lstlisting}
......@@ -193,7 +195,7 @@
\lstinline{int main (void)} lautet und eine \lstinline{return}-Anweisung hat,
wobei die in Aufgabenteil (a) festgestellte Eigenschaft erhalten bleiben soll.}
Datei: \file{loesung-2.c}
Datei: \gitfile{20161024}{loesung-2.c}
\begin{lstlisting}[gobble=8]
char*f="char*f=%c%s%c;int main(void){printf(f,34,f,34,10);return 0;}%c";
int main(void){printf(f,34,f,34,10);return 0;}
......@@ -216,7 +218,7 @@
Hinweis dazu: \lstinline{#include<stdio.h>}
(ohne Leerzeichen, um Platz zu sparen)
Lösung der Zusatzaufgabe: \file{loesung-2x.c}
Lösung der Zusatzaufgabe: \gitfile{20161024}{loesung-2x.c}
\end{itemize}
......@@ -231,7 +233,7 @@
\strut\hfill\url{http://heise.de/-193332},
\end{quote}
Der Artikel verweist auf ein Quelltextfragment (Datei: \file{aufgabe-3.c}),
Der Artikel verweist auf ein Quelltextfragment (Datei: \gitfile{20161024}{aufgabe-3.c}),
das für einen gegebenen Wert \lstinline{days}
das Jahr und den Tag innerhalb des Jahres
für den \lstinline{days}-ten Tag nach dem 1.\,1.\,1980 berechnen soll:
......@@ -320,7 +322,7 @@
\lstinline{IsLeapYear()} bereitstellen (vgl.\ Aufgabe 3 vom
10.\,10.\,2016).
Der Quelltext \file{loesung-3-f1.c} ist eine lauffähige
Der Quelltext \gitfile{20161024}{loesung-3-f1.c} ist eine lauffähige
Version des Programms, die den Fehler (Endlosschleife)
reproduziert.
......@@ -328,12 +330,12 @@
Es liegt nahe, den Fehler in der \lstinline{while}-Bedingung
zu korrigieren, so daß diese Schaltjahre berücksichtigt. Der
Quelltext \file{loesung-3-f2.c} behebt den Fehler auf diese
Quelltext \gitfile{20161024}{loesung-3-f2.c} behebt den Fehler auf diese
Weise mit Hilfe von Und- (\lstinline{&&}) und
Oder-Verknüpfungen (\lstinline{||}) in der
\lstinline{while}-Bedingung.
Der Quelltext \file{loesung-3-f3.c} vermeidet die umständliche
Der Quelltext \gitfile{20161024}{loesung-3-f3.c} vermeidet die umständliche
Formulierung mit \lstinline{&&} und \lstinline{||} durch
Verwendung des ternären Operators \lstinline{?:}. Dieser
stellt eine "`\lstinline{if}-Anweisung für Ausdrücke"' bereit.
......@@ -341,7 +343,7 @@
\lstinline{days >} den Wert 366 im Falle eines Schaltjahrs
bzw.\ ansonsten den Wert 365.
Beide Lösungen \file{loesung-3-f2.c} und \file{loesung-3-f3.c}
Beide Lösungen \gitfile{20161024}{loesung-3-f2.c} und \gitfile{20161024}{loesung-3-f3.c}
sind jedoch im Sinne der Aufgabenstellung \textbf{falsch}.
Diese lautet: "`Schreiben Sie das Quelltextfragment so um,
daß es die beschriebenen Probleme nicht mehr enthält."'
......@@ -353,7 +355,7 @@
\breath
Eine richtige Lösung liefert \file{loesung-3-4.c}. Dieses
Eine richtige Lösung liefert \gitfile{20161024}{loesung-3-4.c}. Dieses
Programm speichert den Wert der Tage im Jahr in einer
Variablen \lstinline{DaysInYear}. Damit erübrigen sich die
\lstinline{if}-Anweisungen innerhalb der
......@@ -369,24 +371,24 @@
Um diese Code-Verdopplung loszuwerden, kann man das
\lstinline{if} durch den \lstinline{?:}-Operator ersetzen und
die Zuweisung innerhalb der \lstinline{while}-Bedingung
vornehmen -- siehe \file{loesung-3-5.c}. Dies ist einer der
vornehmen -- siehe \gitfile{20161024}{loesung-3-5.c}. Dies ist einer der
seltenen Fälle, in denen ein Programm \emph{übersichtlicher\/}
wird, wenn eine Zuweisung innerhalb einer Bedingung
stattfindet.
Alternativ kann \lstinline{DaysInYear()} auch eine Funktion
sein -- siehe \file{loesung-3-6.c}. Diese Version ist
sein -- siehe \gitfile{20161024}{loesung-3-6.c}. Diese Version ist
wahrscheinlich die übersichtlichste, hat jedoch den Nachteil,
daß die Berechnung von \lstinline{DaysInYear()} zweimal statt
nur einmal pro Schleifendurchlauf erfolgt, wodurch Rechenzeit
verschwendet wird.
\file{loesung-3-7.c} und \file{loesung-3-8.c} beseitigen
\gitfile{20161024}{loesung-3-7.c} und \gitfile{20161024}{loesung-3-8.c} beseitigen
dieses Problem durch eine Zuweisung des Funktionsergebnisses
an eine Variable -- einmal innerhalb der
\lstinline{while}-Bedingung und einmal außerhalb.
Der zweimalige Aufruf der Funktion \lstinline{DaysInYear()} in
\file{loesung-3-8.c} zählt nicht als Code-Verdopplung, denn
\gitfile{20161024}{loesung-3-8.c} zählt nicht als Code-Verdopplung, denn
der Code ist ja in einer Funktion gekapselt. (Genau dazu sind
Funktionen ja da: daß man sie mehrfach aufrufen kann.)
......
No preview for this file type
......@@ -27,6 +27,8 @@
\newcounter{exercise}
\newcommand{\exercise}[1]{\addtocounter{exercise}{1}\subsection*{Aufgabe \arabic{exercise}: #1}}
\newcommand{\gitfile}[2]{\href{https://gitlab.cvh-server.de/pgerwinski/hp/raw/master/#1/#2}{\file{#2}}}
\begin{document}
% \thispagestyle{empty}
......@@ -67,7 +69,7 @@
\exercise{Programm analysieren}
Wir betrachten das folgende C-Programm (Datei: \file{aufgabe-2.c}):
Wir betrachten das folgende C-Programm (Datei: \gitfile{20161024}{aufgabe-2.c}):
\begin{lstlisting}
char*f="char*f=%c%s%c;main(){printf(f,34,f,34,10);}%c";main(){printf(f,34,f,34,10);}
\end{lstlisting}
......@@ -94,7 +96,7 @@
\strut\hfill\url{http://heise.de/-193332},
\end{quote}
Der Artikel verweist auf ein Quelltextfragment (Datei: \file{aufgabe-3.c}),
Der Artikel verweist auf ein Quelltextfragment (Datei: \gitfile{20161024}{aufgabe-3.c}),
das für einen gegebenen Wert \lstinline{days}
das Jahr und den Tag innerhalb des Jahres
für den \lstinline{days}-ten Tag nach dem 1.\,1.\,1980 berechnen soll:
......
No preview for this file type
......@@ -28,6 +28,8 @@
\newcommand{\exercise}[1]{\addtocounter{exercise}{1}\subsection*{Aufgabe \arabic{exercise}: #1}}
\newcommand{\solution}{\subsubsection*{Lösung}}
\newcommand{\gitfile}[2]{\href{https://gitlab.cvh-server.de/pgerwinski/hp/raw/master/#1/#2}{\file{#2}}}
\begin{document}
% \thispagestyle{empty}
......@@ -58,12 +60,12 @@
\solution
Die Dateien \file{dates.c} und \file{dates.h} enthalten die Bibliothek,
die Datei \file{test-dates.c} ein Programm zum Testen der Bibliothek.
Die Dateien \gitfile{20161031}{dates.c} und \gitfile{20161031}{dates.h} enthalten die Bibliothek,
die Datei \gitfile{20161031}{test-dates.c} ein Programm zum Testen der Bibliothek.
Eine detaillierte Anleitung,
wie man auf die Funktion \lstinline{date_next()} kommt,
finden Sie im Skript zur Lehrveranstaltung, Datei \file{hp-2016ws.pdf},
finden Sie im Skript zur Lehrveranstaltung, Datei \gitfile{script}{hp-2016ws.pdf},
ab Seite 26.
Eine \textbf{falsche} Lösung wäre eine einzige \file{.c}-Datei,
......@@ -74,17 +76,17 @@
in der \file{.h}-Datei erfolgt
und daß \file{dates.c} die Datei \file{dates.h}
mit \lstinline{#include} einbindet.
Wenn man den Datentyp \lstinline{date} direkt in \file{dates.c} definiert,
kennt das aufrufende Programm (hier: \lstinline{main()} in \file{test-dates.c})
ihn nicht. Wenn man ihn, anstatt \file{dates.h} per \lstinline{#include}
in \file{dates.c} einzubinden, in \file{dates.c} nochmals definiert,
Wenn man den Datentyp \lstinline{date} direkt in \gitfile{20161031}{dates.c} definiert,
kennt das aufrufende Programm (hier: \lstinline{main()} in \gitfile{20161031}{test-dates.c})
ihn nicht. Wenn man ihn, anstatt \gitfile{20161031}{dates.h} per \lstinline{#include}
in \gitfile{20161031}{dates.c} einzubinden, in \gitfile{20161031}{dates.c} nochmals definiert,
funktioniert es zwar, aber man hat eine Code-Verdopplung:
Jede Änderung an der Datenstruktur \lstinline{date} muß dann
an zwei Stellen erfolgen.
\exercise{Fehlerhaftes Programm}
Das folgende OpenGL-Programm (Datei: \file{aufgabe-2.c}) soll einen sich\\
Das folgende OpenGL-Programm (Datei: \gitfile{20161031}{aufgabe-2.c}) soll einen sich\\
gleichmäßig drehenden Würfel darstellen, ist jedoch fehlerhaft.
\smallskip
......@@ -127,8 +129,8 @@
\end{lstlisting}
\goodbreak
(Die Datei \file{opengl-magic.h} sowie die zugehörige C-Datei
\file{opengl-magic.c} sind die aus der Vorlesung bekannten Beispiel-Dateien,
(Die Datei \gitfile{20161031}{opengl-magic.h} sowie die zugehörige C-Datei
\gitfile{20161031}{opengl-magic.c} sind die aus der Vorlesung bekannten Beispiel-Dateien,
die Sie zusammen mit diesen Übungsaufgaben herunterladen können.)
\begin{itemize}
......@@ -169,8 +171,8 @@
Da das Callback jedoch innerhalb von \lstinline{glutMainLoop()}
bekannt sein muß, ist dies zu spät.
Das Beispiel-Programm \file{cube-3.c} aus der Vorlesung
ist eine korrigierte Version des fehlerhaften Programms \file{aufgabe-2.c}.
Das Beispiel-Programm \gitfile{20161031}{cube-3.c} aus der Vorlesung
ist eine korrigierte Version des fehlerhaften Programms \gitfile{20161031}{aufgabe-2.c}.
\item[(b)]
\textbf{Erklären Sie das Drehverhalten des Würfels.}
......@@ -192,13 +194,13 @@
Aufruf von \lstinline{draw()} zu beschränken,
kann man ihn in Aufrufe der Funktionen
\lstinline{glPushMatrix()} und \lstinline{glPopMatrix()}
"`einrahmen"' -- siehe die Dateien \file{cube-4.c} (langsame Drehung)
und \file{cube-5.c} (schnellere Drehung).
"`einrahmen"' -- siehe die Dateien \gitfile{20161031}{cube-4.c} (langsame Drehung)
und \gitfile{20161031}{cube-5.c} (schnellere Drehung).
Alternativ könne man auch in jedem Aufruf von \lstinline{draw()}
um einen konstanten Winkel weiterdrehen
und das Aufaddieren der Gesamtdrehung bewußt miteinbeziehen --
siehe \file{cube-4a.c} und \file{cube-5a.c}.
siehe \gitfile{20161031}{cube-4a.c} und \gitfile{20161031}{cube-5a.c}.
Diese Art der Benutzung der OpenGL-Bibliothek
wäre jedoch für komplexere 3d-Grafik-Szenarien ungeeignet.
......
No preview for this file type
......@@ -31,6 +31,8 @@
\newcommand{\onepoint}{(1 Punkt)\addtocounter{points}{1}}
\newcommand{\points}[1]{(#1 Punkte)\addtocounter{points}{#1}}
\newcommand{\gitfile}[2]{\href{https://gitlab.cvh-server.de/pgerwinski/hp/raw/master/#1/#2}{\file{#2}}}
\begin{document}
\thispagestyle{empty}
......@@ -61,7 +63,7 @@
\exercise{Fehlerhaftes Programm}
Das folgende OpenGL-Programm (Datei: \file{aufgabe-2.c}) soll einen sich\\
Das folgende OpenGL-Programm (Datei: \gitfile{20161031}{aufgabe-2.c}) soll einen sich\\
gleichmäßig drehenden Würfel darstellen, ist jedoch fehlerhaft.
\smallskip
......@@ -103,8 +105,8 @@
\vspace*{-7cm}\strut\hfill
\begin{minipage}{8cm}
(Die Datei \file{opengl-magic.h} sowie die zugehörige C-Datei
\file{opengl-magic.c} sind die aus der Vorlesung bekannten Beispiel-Dateien,
(Die Datei \gitfile{20161031}{opengl-magic.h} sowie die zugehörige C-Datei
\gitfile{20161031}{opengl-magic.c} sind die aus der Vorlesung bekannten Beispiel-Dateien,
die Sie zusammen mit diesen Übungsaufgaben herunterladen können.)
\begin{itemize}
......
No preview for this file type
......@@ -28,6 +28,8 @@
\newcommand{\exercise}[1]{\addtocounter{exercise}{1}\subsection*{Aufgabe \arabic{exercise}: #1}}
\newcommand{\solution}{\subsubsection*{Lösung}}
\newcommand{\gitfile}[2]{\href{https://gitlab.cvh-server.de/pgerwinski/hp/raw/master/#1/#2}{\file{#2}}}
\begin{document}
% \thispagestyle{empty}
......@@ -40,7 +42,7 @@
Strings werden in der Programmiersprache C
durch Zeiger auf \lstinline{char}-Variable realisiert.
Wir betrachten die folgende Funktion (Datei: \file{aufgabe-1.c}):
Wir betrachten die folgende Funktion (Datei: \gitfile{20161107}{aufgabe-1.c}):
\begin{center}
\begin{minipage}{8cm}
\begin{lstlisting}[gobble=8]
......@@ -161,7 +163,7 @@
\smallskip
Die Datei \file{loesung-1.c} enthält ein Testprogramm
Die Datei \gitfile{20161107}{loesung-1.c} enthält ein Testprogramm
für alle o.\,a.\ Lösungen.
Das Programm testet nur die offensichtlichsten Fälle;
für den Einsatz der Funktionen in einer Produktivumgebung
......@@ -242,8 +244,8 @@
\solution
Siehe die Dateien \file{textgraph.c} und \file{textgraph.h} (Bibliothek)
sowie \file{test-textgraph.c} (Test-Programm).
Siehe die Dateien \gitfile{20161107}{textgraph.c} und \gitfile{20161107}{textgraph.h} (Bibliothek)
sowie \gitfile{20161107}{test-textgraph.c} (Test-Programm).
Diese Lösung erfüllt zusätzlich die Aufgabe,
bei fehlerhafter Benutzung (Koordinaten außerhalb des Zeichenbereichs)
......
No preview for this file type
......@@ -31,6 +31,8 @@
\newcommand{\onepoint}{(1 Punkt)\addtocounter{points}{1}}
\newcommand{\points}[1]{(#1 Punkte)\addtocounter{points}{#1}}
\newcommand{\gitfile}[2]{\href{https://gitlab.cvh-server.de/pgerwinski/hp/raw/master/#1/#2}{\file{#2}}}
\begin{document}
\thispagestyle{empty}
......@@ -43,7 +45,7 @@
Strings werden in der Programmiersprache C
durch Zeiger auf \lstinline{char}-Variable realisiert.
Wir betrachten die folgende Funktion (Datei: \file{aufgabe-1.c}):
Wir betrachten die folgende Funktion (Datei: \gitfile{20161107}{aufgabe-1.c}):
\begin{center}
\begin{minipage}{8cm}
\begin{lstlisting}[gobble=8]
......
No preview for this file type
......@@ -28,6 +28,8 @@
\newcommand{\exercise}[1]{\addtocounter{exercise}{1}\subsection*{Aufgabe \arabic{exercise}: #1}}
\newcommand{\solution}{\subsubsection*{Lösung}}
\newcommand{\gitfile}[2]{\href{https://gitlab.cvh-server.de/pgerwinski/hp/raw/master/#1/#2}{\file{#2}}}
\begin{document}
% \thispagestyle{empty}
......@@ -46,7 +48,7 @@
Mit anderen Worten: $n! = 1\cdot2\cdot3\cdot\dots\cdot n$.
Die folgende Funktion \lstinline{fak()} berechnet die Fakultät \emph{rekursiv}
(Datei: \file{aufgabe-1.c}):
(Datei: \gitfile{20161114}{aufgabe-1.c}):
\begin{lstlisting}
int fak (int n)
......@@ -77,7 +79,7 @@
\textbf{Schreiben Sie eine Funktion, die die Fakultät \emph{iterativ} berechnet,\\
d.\,h.\ mit Hilfe einer Schleife anstelle von Rekursion.}
Datei: \file{loesung-1.c}
Datei: \gitfile{20161114}{loesung-1.c}
\begin{lstlisting}[gobble=8]
int fak (int n)
{
......@@ -116,7 +118,7 @@
\exercise{Strings}
Wir betrachten nochmals die Funktion aus der vorherigen Übung (Datei: \file{aufgabe-2.c}):
Wir betrachten nochmals die Funktion aus der vorherigen Übung (Datei: \gitfile{20161114}{aufgabe-2.c}):
\begin{center}
\begin{minipage}{8cm}
\begin{lstlisting}[gobble=8]
......@@ -191,8 +193,8 @@
\solution
Siehe die Dateien \file{textgraph.c} und \file{textgraph.h} (Bibliothek)
sowie \file{test-textgraph.c} (Test-Programm).
Siehe die Dateien \gitfile{20161114}{textgraph.c} und \gitfile{20161114}{textgraph.h} (Bibliothek)
sowie \gitfile{20161114}{test-textgraph.c} (Test-Programm).
Die Musterlösung folgt i.\,w.\ dem Algorithmus \lstinline{fill4()}
der Webseite \url{https://de.wikipedia.org/wiki/Floodfill}.
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment