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.
10 KAPITEL 2. MATRIZEN IN <strong>C++</strong><br />
#def<strong>in</strong>e <strong>in</strong>dex(i,j) (( i)∗n+(j))<br />
e<strong>in</strong>. Und weiters<br />
9 double& operator() (<strong>in</strong>t i, <strong>in</strong>t j) { return a[<strong>in</strong>dex(i,j )]; }<br />
operator[].<br />
Schließlich wollen wir noch den normalen Indexoperator implementieren. Wie gehen wir<br />
vor?<br />
Wenn wir wollen, dass wir mit Hilfe von a[ i ][ j ] auf das Matrixelement aij e<strong>in</strong>er Matrix<br />
A zugreifen können, so muss operator[i] e<strong>in</strong>en Zeiger liefern. Betrachten wir nochmals<br />
die Aufteilung des Speicherplatzes<br />
a a+n a+2∗n a+3∗n<br />
↓ ↓ ↓ ↓<br />
{ a00, a01, a02, a03, a10, a11, a12, a13, a20, a21, a22, a23, a30, a31, a32, a33 }<br />
Wir erkennen, dass der Zeiger a+i∗n auf den Beg<strong>in</strong>n der i-te Zeile der Matrix A zeigt.<br />
Durch (a+i∗n)[j] können wir also auf aij zugreifen.<br />
Somit können wir die Klassenfunktion<br />
10 double& operator[] (<strong>in</strong>t i) { return a+i∗n; }<br />
vervollständigen.<br />
Aufgabe 2.1— Vervollständigen Sie die Matrixklasse. Schreiben Sie e<strong>in</strong> Programm,<br />
das e<strong>in</strong>e 3 × 3-Matrix deklariert und sie mit den Matrixelementen<br />
besetzt.<br />
⎛<br />
A = ⎝<br />
1 2 0<br />
2 4 3<br />
7 2 1<br />
Aufgabe 2.2— Betrachten Sie die folgende Funktion:<br />
1 void f(const matrix& a)<br />
2 {<br />
3 cout