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.
ich hab ne Matrix die ich um 90 Grad drehen (transponieren) soll.
Hab jetzt alle Foren und das Internet durchgestöbert... aber finde immer nur das gleiche, nur, so funktioniert es nicht ganz...
Erstmal mein Code:
Code:
public class Matrix
{
private int [][] elemente;
private int [][] transponierte;
Ein Bequemlichkeitskonstruktor (hab verschiedene gemacht, unter anderem auch einen mit Zufallszahlen und son Kram und wo man die Anzahl der Zeilen und Spalten angeben kann, aber mit dem ist es erstmal am einfachsten):
HTML:
public Matrix()
{
elemente = new int [][]{{1,2},{3,4}};
}
So nun haben wir ein ganz kleines 2D Array.
Nun will ich das drehen.
Code:
public void transponieren()
{
transponierte = new int [elemente.length][elemente[0].length];
if(elemente.length == elemente[0].length)
{
for(int i=0;i<elemente.length;i++)
{
for (int j=0;j<elemente[i].length;j++)
{
transponierte[j][i] = elemente[i][j];
}
}
}
else
{
System.out.println("Das Array ist nicht rechteckig!");
}
}
Das man dafür einfach en neues Array anlegt und ne verschachtelte for Schleife macht, ist klar, jedoch steht überall im Internet als Anweisung in der verschachtelten for Schleife nur:
Code:
transponierte[j][i] = elemente[i][j];
Und das alleine reicht definitiv nicht aus.
Aus
1 2
3 4
wird
1 3
2 4
Und dabei handelt es sich ja nicht um eine 90° Drehung...
Äh ja, die Transponierte erhälst du indem du die Ursprungsmatrix "bildlich gesprochen" um 90grad drehst. Hier besteht das Missverständnis, dass es sich um ein konstrukt aus der graphischen Datenverarbeitung handelt. Du sagst es nämlich so das man denken könnte du meinst eine 90 grad Drehung um einen Punkt, praktisch eine Abbildung...
Aufgabenstellung:
iv) Als transponierte Matrix wird die Matrix bezeichnet, deren Elemente so vertauscht wurden,
dass das Element mit dem Index i, j durch das Element mit dem Index j, i ersetzt wird. Dabei
wird die Matrix quasi um ihre Hauptdiagonale gekippt.
Wenn man die Aufgabenstellung so liest, scheint meine Lösung ja bereits doch richtig zu sein...
Äh ja, die Transponierte erhälst du indem du die Ursprungsmatrix "bildlich gesprochen" um 90grad drehst. Hier besteht das Missverständnis, dass es sich um ein konstrukt aus der graphischen Datenverarbeitung handelt. Du sagst es nämlich so das man denken könnte du meinst eine 90 grad Drehung um einen Punkt, praktisch eine Abbildung...
soweit ich es zu dem Zeitpunkt beurteilt habe, was nicht richtig sein muss,
siehe z.B. noch das Posting nach meinem vorherigen, falls du das nicht sowieso schon machst und alles einzeln beantwortest
soweit ich es zu dem Zeitpunkt beurteilt habe, was nicht richtig sein muss,
siehe z.B. noch das Posting nach meinem vorherigen, falls du das nicht sowieso schon machst und alles einzeln beantwortest
Ja sorry, ich mache das, damit es noch verständlich bleibt.
Doch, ich glaube wir verstehen uns richtig und ich glaube ich habe es auch richtig.
Die Aufgabenstellung ist ja folgende:
iv) Als transponierte Matrix wird die Matrix bezeichnet, deren Elemente so vertauscht wurden,
dass das Element mit dem Index i, j durch das Element mit dem Index j, i ersetzt wird. Dabei
wird die Matrix quasi um ihre Hauptdiagonale gekippt.
Mein Code macht mit meiner Matrix folgendes:
Aus
1 2
3 4
wird
1 3
2 4
Also für meine Begriffe sollten wir genau das tun.
dann passe wenigstens noch die Fehlermeldung an:
> System.out.println("Das Array ist nicht rechteckig!");
ein Array ist quasi immer rechteckig, alles andere ließe sich aus einem einfachen Vergleich gar nicht feststellen,
du meinst hier quadratisch oder nicht?
ob nicht-quadratische auch funktionieren sollen ist ja gerade der Punkt,
wenn du willst versuche das auch als Eingabe, dürften nur noch kleine Änderungen nötig sein, dann ginge das auch
dann passe wenigstens noch die Fehlermeldung an:
> System.out.println("Das Array ist nicht rechteckig!");
ein Array ist quasi immer rechteckig, alles andere ließe sich aus einem einfachen Vergleich gar nicht feststellen,
du meinst hier quadratisch oder nicht?
ob nicht-quadratische auch funktionieren sollen ist ja gerade der Punkt,
wenn du willst versuche das auch als Eingabe, dürften nur noch kleine Änderungen nötig sein, dann ginge das auch