Matrix n x n < C/C++ < Programmiersprachen < Praxis < Informatik < Vorhilfe
|
Aufgabe | Ich weiß zwar nicht, warum mein Beitrag entfernt wurde aber jedenfalls war meine Frage nicht beantwortet... deshalb nochmal:
a) Wie stelle ich eine n x n Matrix mithilfe eines Zeigers dar?
b) Wie kann ich die Matrix "transponieren" und in "Tupelschreibweise" ausgeben? |
Wir behandeln zunächst nur Aufgabenteil a)
mein Ansatz wäre zunächst einen Zeiger mit:
double **matrix;
zu definieren...
Damit hätten wir die Zeilen der Matrix.
Durch einen weiteren Zeiger
*matrix [n x n]
Definiere ich die Spalten... dies sieht (bei 3x3) wie folgt aus:
[mm] a_{1,1} [/mm] -> [mm] a_{1,2} [/mm] | [mm] a_{1,3} [/mm]
[mm] a_{2,1} [/mm] -> [mm] a_{2,2} [/mm] | [mm] a_{2,3} [/mm]
[mm] a_{3,1} [/mm] -> [mm] a_{3,2} [/mm] | [mm] a_{3,3} [/mm]
Zunächst die Frage:
Kann ich das so darstellen?
Doppelpost... bitte löschen!
Vorhin war der letzte Thread nicht da :( komisch
|
|
|
|
Hallo,
> jedenfalls war meine Frage nicht beantwortet
Doch, hier! Dein Vorschlag geht einfach nicht, weil es um dynamische Speicherallokation geht.
> mein Ansatz wäre zunächst einen Zeiger mit:
> double **matrix;
> zu definieren...
Nochmal: es muss
int **matrix;
heißen!
> Damit hätten wir die Zeilen der Matrix.
Nein! Du hast damit nur einen Zeiger auf weitere Zeiger deklariert, hast dafür aber noch keinen Speicherplatz. Wie willst du denn jetzt auf die einzelnen Zeilen der Matrix zugreifen?
> Durch einen weiteren Zeiger
> *matrix [n x n]
> Definiere ich die Spalten...
So geht das aber gar nicht. Du musst einen neuen Zeiger (anderer Name!) deklarieren und dafür Speicher allozieren.
Im Anschluss müsstest du die Zeiger in matrix (dem ersten Zeigerarray) auf die entsprechenden Zeiger in dem neuen Array setzen. Sonst besteht kein Bezug zwischen den Zeilen und den Matrixeinträgen.
Bitte schau dir nochmal den oben genannten Beitrag an.
Gruß
Martin
|
|
|
|