Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
habe vergessen mein jetziges Programm hinzuschreiben:
public void transpose ( int[][] matrix ) //throws MatrixExceptions
{
int m = 1, n = 1; // number of rows / columns
matrix = new int[m][n];
for (int i = 0; i < m; ++i)
for (int j = 0; j < n; ++j)
matrix[j] = matrix[j];
Wenn du es so machst, wie du es beschrieben hast, überschreibst du ja schon werte in deiner matrix. An die kommst du später nicht mehr ran.
also musst du dir eine zweite matrix erstellen, in der du die transponierte matrix reinschreibst.
@ Hoask:
Es soll ja eine quadratische matrix sein.
Ich würde folgendes machen:
1. Zeilenanzahl in eine variable (zb: n) speichern
2. n mit der Spaltenanzahl vergleichen
3. eine neue matrix der größe n*n erzeugen.
wenn die anzahl der zeilen und spalten schon nicht übereinstimmt kannst du schon abbrechen.
(zumindest für diese aufgabe) :wink:
Danke für die Antworten, die haben schon sehr geholfen, aber gibt es auch eine Möglichkeit die transponierte Matrix zu bekommen ohne ein neues Array zu benutzen?
Weil ich verhindern will, dass Sachen doppelt bearbeitet werden, ich gehe nur die obere Dreeicksmatrix durch (oder die untere, je nach dem, wie man die Indizes versteht)
Die Diagonale einer Matrix wird ja durch das Transponieren nicht verändert. Ergo muss j = 1 nicht betrachtet werden. (Deshalb das +1)
Und wenn das Element i = 1, j = 2, also matrix[1][2] mit dem Element matrix[2][1] vertauscht wird, dann sollte man diese Vertauschung nicht nochmal durchführen, sonst hat man die Ursprüngliche Matrix wieder.
Am besten malst du dir mal eine Matrix auf und gehts den Algorithmus Schritt für Schritt durch. (3x3 ist zu empfehlen)
Dann sollte es klarer werden.
Hi,
die Zuweisung ist OK, denn in Matrix[j] ist ja ein int gespeichert, was die zweite for-Schleife betrifft, mit j = i + 1 könntest du ein Bischen Rechenpower sparen...
matrix[0][0] = matrix[0][0] ist ja Blödsinn an sich...