======================================= Erste Tests mit eindimensionalen Arrays [TOC] ======================================= Aufgabe ======= - Eine Funktion `init_vector` soll einen Vektor initialisieren. Der Vektor wird dabei spezifiziert über die Anfangsadresse, die Anzahl der Elemente und dem Abstand zwischen den Elementen. Dabei ist das erste Element mit einer 1 zu initialisieren, das zweite Element mit einer 2 usw. - Analog dazu soll die Funktion `print_vector` einen Vektor ausgeben, der auf die gleiche Weise spezifiziert wird. Ein Test sollte dann - ein globales Array mit 8 Elementen deklarieren, - zunächst das gesamte Array als einen Vektor initialiseren und ausgeben, - dann das globale Array für zwei Vektoren der Länge 4 verwenden, die im Speicher hintereinander liegen und jeweils zu initialisieren und auszugeben sind, und - schließlich das globale Array für zwei Vektoren der Länge 4 zu verwenden, wobei die Elemente des globalen Arrays jeweils alternierend dem ersten und dem zweiten Vektor gehören, und diese wiederum zu initialisieren und auszugeben. Lösungsvorschlag ---------------- :import: session1/example1_vector.c Übersetzen und Ausführen ------------------------ ---- SHELL (path=session1) ---- gcc -Wall -o example1_vector example1_vector.c ./example1_vector --------------- Aufgabe ======= Um zu sehen, wie die Zugriffszeiten skalieren, sollten Sie diese messen für Vektorlängen für alle Zweierpotenzen beginnend von 8.192 bis 67.108.864. Damit die Messungen sich möglichst wenig gegenseitig beeinflussen, sollten Sie für jede Vektorlänge - zwei doppelt so große Vektoren `vector1` und `vector2` dynamisch mit Hilfe von `malloc` belegen, - `vector1` dann in zwei hintereinander liegende Vektoren aufteilen und diese mit Zeitmessung initialisieren, - `vector2` in zwei ineinander verwobene Vektoren aufteilen und diese ebenfalls mit Zeitmessung initialisieren und - abschließend `vector1` und `vector2` wieder freigeben. Lösungsvorschlag ---------------- :import: session1/example2_vector.c Übersetzen und Ausführen ------------------------ ---- SHELL (path=session1) ---- gcc -Wall -o example2_vector example2_vector.c ./example2_vector ---------------