Übergebene Matrix auf Symmetrie prüfen

  • Hallo,


    ich habe ein Problem. Ich soll eine Matrix (2D-Array) auf die Symmetrie-Eigenschaft und null-Parameter überprüfen. Symmetrisch ist die Matrix,wenn sie Quadratisch ist und mit ihrer Transponierten Matrix übereinstimmt. Das Programm wird mithilfe eines Überprüfungstools bewertet und dementsprechend keine Fehler angezeigt. Durch das Tool bekomme ich eine vorgegebene Matrix übergeben. Diese lautet {1,2,3},{4,2},{5}. Wenn ich diese transponieren will, müsste ich die restlichen Felder im Array eigentlich mit 0 auffüllen, leider weiß ich nicht wie ich das machen soll.


    Mein Ansatz

  • Bin mir nicht sicher ob ich das richtig verstehe, aber wenn die vorgegebene Matrix {1,2,3},{4,2},{5} lautet, heißt das dann sie sieht so aus:
    1 2 3
    4 2 0
    5 0 0


    Falls die Matrix immer so übergeben wird, sollte es nicht schwer sein auf Symmetrie zu überprüfen, es ist auch gar nicht notwendig die nicht angegebenen Felder mit 0 aufzufüllen. Wenn du die for-Schleifen umdrehst und in der inneren Schleife m[j] verwendest, d.h.

    Code
    1. for(int j = 0; j < m.length; j++) {for(int k = 0; k < m[j].length; k++) {if(m[j][k] != m[k][j]) {return false;}}}


    sollten die 0er gar nicht überprüft werden, da sowieso klar ist, dass diese immer übereinstimmen. Beachte auch, dass sobald einmal sym = false gesetzt wird, die Matrix nicht mehr symmetrisch sein kann, du solltest daher wie im Code oben gleich ein return false verwenden. Bei deinem Code kann es vorkommen, dass sym nochmals auf true gesetzt wird, obwohl die Matrix nicht symmetrisch ist.