06.10.2013 Aufrufe

Kapitel 2 Matrizen in C++

Kapitel 2 Matrizen in C++

Kapitel 2 Matrizen in C++

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!