diff --git a/20160107/ainf-uebung-20160107.pdf b/20160107/ainf-uebung-20160107.pdf index f5547f2737e4e6b8588a327421feab6f03df537d..d047aee3882dfcd11497921877a8a75ce397fec2 100644 Binary files a/20160107/ainf-uebung-20160107.pdf and b/20160107/ainf-uebung-20160107.pdf differ diff --git a/20160107/ainf-uebung-20160107.tex b/20160107/ainf-uebung-20160107.tex index 26e4b24b47f0eec8014a5afe10109d8ef3a3dc80..eb79ba6cf2a9a460253b89a7c637b5a54b44c8d0 100644 --- a/20160107/ainf-uebung-20160107.tex +++ b/20160107/ainf-uebung-20160107.tex @@ -24,21 +24,13 @@ \usepackage{pgscript} \usepackage{enumerate} -\usepackage{pdftricks} -\usepackage{sfmath} - -\begin{psinputs} - \usepackage{pgscript} -% \definecolor{PracticallyWhite}{rgb}{0.99 0.99 0.99} - \definecolor{verylightgray}{rgb}{0.95 0.95 0.95} -\end{psinputs} +\usepackage{ifthen} \newcounter{exercise} \newcommand{\exercise}[1]{\addtocounter{exercise}{1}\subsection*{Aufgabe \arabic{exercise}: #1}} \newcounter{points} -\newcommand{\onepoint}{(1 Punkt)\addtocounter{points}{1}} -\newcommand{\points}[1]{(#1 Punkte)\addtocounter{points}{#1}} +\newcommand{\points}[1]{\ifthenelse{#1=1}{(1 Punkt)}{(#1 Punkte)}\addtocounter{points}{#1}} \begin{document} @@ -46,8 +38,83 @@ \section*{Angewandte Informatik\\Übungsaufgaben -- 7.\ Januar 2016} - \subsection*{???} + \exercise{Landau-Symbole} + + Von welcher Ordnung (Landau-Symbol) sind die folgenden Problemstellungen?\\ + Begründen Sie jeweils Ihre Antwort. + \begin{enumerate}[\hspace{0.9em}(a)] + \item + Iterative Berechnung einer Fakultät + (siehe Übungsaufgabe 1 vom 19.\,11.\,2015)\\ + \points{1} + \item + Rekursive Berechnung einer Fakultät\\ + \points{1} + \item + Türme von Hanoi (nötige Anzahl von Verschiebungen + in Abhängigkeit von der Anzahl der Scheiben)\\ + \points{1} + \item + \lstinline{push()} auf einen Stack\\ + \points{1} + \item + Einfügen eines Elements irgendwo in den Stack + ("`mitten in den Stapel schieben"')\\ + \points{1} + \item + \lstinline{push()} auf einen FIFO\\ + \points{1} + \end{enumerate} + + \exercise{Länge von Strings} + + (Diese Übungsaufgabe ist eine Ergänzung zu Aufgabe 1 der Probeklausur + vom 22.\,10.\,2015.) + + Strings werden in der Programmiersprache C durch Zeiger auf \lstinline{char}-Variable realisiert. + + Beispiel: \lstinline{char *hello_world = "Hello, world!\n"} + + Die Systembibliothek stellt eine Funktion \lstinline{strlen()} zur Ermittlung der Länge von Strings\\ + zur Verfügung (\lstinline{#include <string.h>}). - \points{42} + Wir betrachten nun die folgenden Funktionen: + \begin{center} + \begin{minipage}{8cm} + \begin{lstlisting}[gobble=8] + int fun_1 (char *s) + { + int x = 0; + for (int i = 0; i < strlen (s); i++) + x += s[i]; + return x; + } + \end{lstlisting} + \end{minipage}% + \begin{minipage}{6cm} + \vspace*{-1cm} + \begin{lstlisting}[gobble=8] + int fun_2 (char *s) + { + int i = 0, x = 0; + int len = strlen (s); + while (i < len) + x += s[i++]; + return x; + } + \end{lstlisting} + \vspace*{-1cm} + \end{minipage} + \end{center} + \begin{itemize} + \item[(g)] + Von welcher Ordnung (Landau-Symbol) sind die beiden Funktionen\\ + hinsichtlich der Anzahl ihrer Zugriffe auf die Zeichen im String -- und warum? + \points{2} + \item[(h)] + Von welcher Ordnung (Landau-Symbol) ist Ihre selbstgeschriebene, + effizientere Funktion und warum? + \points{1} + \end{itemize} \end{document}