Matrizen und das Full-Storage Speicherformat
Ziel: Umsetzen von numerischen Algorithmen, die Matrix-Operationen
beinhalten.
Aufgabe
-
Eine Funktion initMatrix soll eine \(m\times n\) Matrix initialisieren, indem die Elemente bei \(1\) beginnen zeilenweise und fortlaufend numeriert werden. Beispielsweise für \(m=2\) und \(n=3\):
\[\begin{pmatrix}a_{1,1} & a_{1,2} & a_{1,3} \\a_{2,1} & a_{2,2} & a_{2,3} \\\end{pmatrix}\leftarrow\begin{pmatrix}1 & 2 & 3 \\4 & 5 & 6\end{pmatrix}\] -
Eine Funktion printMatrix soll eine \(m\times n\) Matrix ausgeben
Dabei soll folgendes berücksichtigt werden:
-
Die Funktionen erhalten die Matrizen im Full-Storage Format.
-
Die Funktionalität soll unabhängig davon sein, ob die Matrizen spaltenweise gespeichert sind.
-
Ein Puffer benutzt werden, der es erlaubt, Matrizen mit maximalen Dimensionen DIMMAX_M und DIMMAX_N zu speichern. Diese Konstanten sollen durch Macros festgelegt werden.
-
Der Puffer kann statisch oder dynamisch angelegt werden.
Testaufrufe
Alle Testaufrufe sollen zuerst für eine zeilenweise gespeicherte Matrix und dann für eine spaltenweise gespeicherte Matrix erfolgen:
-
Eine \(7 \times 8\) Matrix \(A\) initalisieren.
-
Die Matrix \(A\) ausgeben.
-
Die Matrix \(A^T\) ausgeben.
-
Den benutzten Pufferbereich ausgeben, d.h. die benutzen Werte des Arrays als \(1 \times m\cdot n\) Matrix ausgeben.
-
Die 2-te Zeile ausgeben.
-
Die 3-te Spalte ausgeben.
-
Den Block
\[\left(\begin{array}{ccc}a_{2,4} & a_{2,5} & a_{2,6} \\a_{3,4} & a_{3,5} & a_{3,6}\end{array}\right)\]ausgeben.