Kapitel 2 Matrizen in C++
Kapitel 2 Matrizen in C++
Kapitel 2 Matrizen in C++
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
8 KAPITEL 2. MATRIZEN IN <strong>C++</strong><br />
1 matrix a(3); // 3 x 3 Matrix<br />
2<br />
3 a(1,2)=1;<br />
4 a [0][1]=2;<br />
se<strong>in</strong>. In der ersten Zeile wird e<strong>in</strong>e 3×3 Matrix deklariert, wobei an dieser Stelle genügend<br />
Speicherplatz reserviert werden soll. Zeile 3 zeigt e<strong>in</strong>en Zugriff auf das Matrixelement a12.<br />
Weiters wäre es wünschenswert, dass wir auch <strong>in</strong> “klassischer” C-Form a[ i ][ j ] auf das<br />
Matrixelement aij zugreifen können.<br />
Wir beg<strong>in</strong>nen nun mit der Implementierung der Matrixklasse. Zuerst öffnen wir zwei Dateien<br />
matrix.h und matrix.cc. matrix.h ist die header-Datei, <strong>in</strong> der die Klassendef<strong>in</strong>ition<br />
(sowie kürzere Klassenfunktionen) stehen sollen. In matrix.cc werden die längeren<br />
Klassenfunktionen ausprogrammiert.<br />
Im Folgenden soll angenommen werden, dass Sie die Grundkonzepte von Klassen <strong>in</strong> <strong>C++</strong><br />
kennen und wissen, wie Sie mehrere Dateien kompilieren und b<strong>in</strong>den können (z.B. unter<br />
Verwendung von Makefile).<br />
2.1.1 Grundelemente der Matrixklasse<br />
Beg<strong>in</strong>nen wir mit der Klasse matrix.h. Das Gerüst ist von der Form<br />
1 #ifndef matrix h<br />
2 #def<strong>in</strong>e matrix h<br />
3<br />
4 class matrix {<br />
5 public:<br />
6 matrix(<strong>in</strong>t n=0);<br />
7 ˜matrix();<br />
8<br />
9 double& operator() (<strong>in</strong>t i, <strong>in</strong>t j);<br />
10 double ∗operator[] (<strong>in</strong>t i);<br />
11<br />
12 <strong>in</strong>t size () const {return n; }<br />
13<br />
14 private:<br />
15 <strong>in</strong>t n;<br />
16 double ∗a;<br />
17 };<br />
18<br />
19 #endif<br />
Die Bedeutung der Zeilen ist wie folgt: