Matrix Transponieren

valentina2013

Bekanntes Mitglied
Hallo,

ich möchte ein Matrix Transponieren. Hier meine Code:
Java:
public class Matrix {

	public static int[][] transpose(int n, int[][] A) {
		int b;
		for (int i = 0; i < n; i++) {
			for (int j = 0; j < n; j++) {
				if (i == j)
					continue;
				b = A[i][j];
				A[i][j] = A[j][i];
				A[j][i] = b;

			}
		}
		return A;
	}

	public static void main(String... args) {

		int[][] A = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } };
		for (int i = 0; i < 3; i++) {
			for (int j = 0; j < 3; j++) {
				System.out.print(A[i][j] + ",");
			}
		}

		transpose(3, A);
		System.out.println();
		for (int i = 0; i < 3; i++) {
			for (int j = 0; j < 3; j++) {
				System.out.print(A[i][j] + ",");
			}
		}
	}
}
Die unveränderlich die selbe Matrix wieder ausgibt. Was mache ich falsch??????????
 
Zuletzt bearbeitet:
Hi,
Wenn du eine m*n matrix Transponierst, dann wird daraus eine n*m Matrix. Ich sehe zwar, das deine Matrix quadratisch ist und daher das transponieren funktioniert, aber wenn du keine quadratische Matrix hast, funktiniert deine Code so nicht.
Hier mal ein Beispiel wie du es machen kannst:
Java:
public class Matrix {

	public static final int ROWS = 4;
	public static final int COLUMNS = 5;
	public static int[][] matrix = new int[ROWS][COLUMNS];
	public static int[][] t_matrix = new int[COLUMNS][ROWS]; // Transponierte

	public static void main (String[] args) {

		for (int i=0; i<ROWS; i++) {
			for (int j=0; j<COLUMNS; j++) {
				matrix[i][j] = COLUMNS*i+j+1;
			}
		}

		System.out.println("Vor dem Transponieren:");

		for (int i=0; i<ROWS; i++) {
			for (int j=0; j<COLUMNS; j++) {
				System.out.print(matrix[i][j] + " ");
			}
			System.out.println();
		}

		for (int i=0; i<ROWS; i++) {
			for (int j=0; j<COLUMNS; j++) {
				t_matrix[j][i] = matrix[i][j];
			}
		}

		System.out.println("Nach dem Transponieren:");

		for (int i=0; i<t_matrix.length; i++) {
			for (int j=0; j<t_matrix[i].length; j++) {
				System.out.print(t_matrix[i][j] + " ");
			}
			System.out.println();		

		}
	}
}
 
Zuletzt bearbeitet:
Du vertauscht alle Elemente zwei mal.
z.B.
Irgendwann hat i den Wert 0 und j den Wert 1.
Etwas später ist dann i 1 und j 0.

Die Schleife sollte also so aussehen.
Java:
for (int i = 0; i < n; i++) {
    for (int j = i+1; j < n; j++) {
        ...
    }
}
 

Zurück
Oben