Guten Tag,
ich sitze gerade an der Aufgabe, Pseudocode in Java umzuschreiben.
Dies ist der Pseudocode:
Code:
/** A.transpose():
*
* A entspricht Matrix, die transponiert werden soll. (Die
* zugehörigen Zahlen werden im Attribut 'data' gespeichert)
*
* anzSpalten <- dim(A,1) // Anzahl Spalten in transp. Matrix
* anzZeilen <- dim(A,2) // Anzahl Zeilen in transp. Matrix
*
* B = create Matrix(anzZeilen, anzSpalten)
*
* for a <- 1 to anzSpalten do
* for b <- 1 to anzZeilen do
* B[b,a] <- A[a,b]
* end for
* end for
*
* return B
*/
Und das habe ich schon geschrieben:
Java:
publicMatrixtranspose(){assert(data!=null);int anzSpalten = data.length;int anzZeilen = data[0].length;MatrixB=newMatrix(anzZeilen,anzSpalten);for(int a =1; a < anzSpalten; a++){for(int b =1; b < anzZeilen; b++){B[b][a]=A[a][b];}}returnB;}
Ist das bisher so korrekt?
Ich frage mich nur wie ich B[b,a] <- A[a,b] in Java umschreibe.
Ich dachte es fängt bei 1 an, weil im Pseudocode a <- 1 und b <- 1 steht.
Fängt das immer ausnahmslos bei 0 an?
Oder muss es bei 0 anfangen, weil Arrays mit 0 anfangen?
So klappt es, vielen Dank.
Aber ich glaube, dass ich es nicht ganz verstanden habe.
Was ich nicht verstehe ist diese Zeile:
B.data[a] = this.data[a];
Warum b.data und this.data?
Noch zwei Fragen nebenbei:
1. Warum bzw. wann benutzt man Klassen als Datentyp? In diesem Fall "Matrix".
2. Mich verwirren verschachtelte Schleifen ein wenig. Oder auch allgemein mehrdimensionale Arrays.
Ich kann mir das nicht wirklich bildlich vorstellen. Hat da vielleicht jemand ein gutes Tutorial zu oder kann es selbst gut erklären?
Darf ich mal fragen: du kannst aber schon Java ?
data ist das attribut in dem die eigentlichen daten stehen, also wohl ein int[][] data oder double[][] data.
Das ist in deinem Code ja noch nicht dargestellt, insofern ist die Klasse Matrix ja noch nicht komplett. Es fehlt z.B. auch ein Konstruktor.
Darf ich mal fragen: du kannst aber schon Java ?
data ist das attribut in dem die eigentlichen daten stehen, also wohl ein int[][] data oder double[][] data.
Das ist in deinem Code ja noch nicht dargestellt, insofern ist die Klasse Matrix ja noch nicht komplett. Es fehlt z.B. auch ein Konstruktor.
Hatte bisher 1 Semester Java. Bin also noch ein Anfänger, würde ich behaupten.
DIe Klasse Matrix ist in der Aufgabe schon vorgegeben. Es sollte nur diese Methode implementiert werden.
Ich habe nochmal nachgeschaut was this bedeutet (verwechsel es leider manchmal) und habe es nun verstanden.
Vor der Schleife wird eine leere Matrix erzeugt, die genauso groß ist wie die aus data.
In der Schleife werden einfach die Werte verkehrt herum übergeben. B.data zeigt auf das erzeugte B und this zeigt auf das Attribut data.
Eine Frage steht aber noch offen:
Warum bzw. wann benutzt man Klassen als Datentyp? In diesem Fall "Matrix".
Wenn du einen "Mehrwert" gegenüber der reinen Definition eines 2-dimensionalen double-arrays haben willst. In deinem Fall die ganzen Matrix-Operationen als Methoden der Klasse Matrix.