array 4x4 über die diagonale spiegeln aber wie



  • guten tag anfänger in c++

    ich hab ein vektor array bestehend aus 4x4 zahlen
    bsp
    1 2 3 4
    3 4 5 6
    7 8 9 0
    2 3 8 7

    das soll gespiegelt werden DUIAGONAL

    also zu

    1 3 7 5
    2 4 8 3
    3 5 9 8
    4 6 0 7

    matrix_1[i][j] heist das array

    fit den for schleifen wird das ja dann wieder zurückgedreht

    for (i=0;i<4;i++)
    for (j=0;j<4;j++)
    ** matrix i j in tmp
    matrix I J = matrix j I
    matrix j i = tmp

    so gehts auf keinen fall

    wier kann man das elegant lösen

    danke bin anfänger bitte nicht über pointer



  • Am simpelsten sind wohl hartcodierte 6 swaps zum transponieren. Ansonsten ist die Idee mit der Schleife nicht verkehrt, da sie sich auf beliebig große quadratische Matrizen erweitern lässt.

    for(int i = 1; i != 4; ++i)
      for(int j=0; j != i; ++j)
        std::swap(matrix[i][j], matrix[j][i]);
    

    edit: ungetestet.



  • Walli schrieb:

    Am simpelsten sind wohl hartcodierte 6 swaps zum transponieren. Ansonsten ist die Idee mit der Schleife nicht verkehrt, da sie sich auf beliebig große quadratische Matrizen erweitern lässt.

    for(int i = 1; i != 4; ++i)
      for(int j=0; j != i; ++j)
        std::swap(matrix[i][j], matrix[j][i]);
    

    edit: ungetestet.

    danke das wars was ich gesucht hatte


Anmelden zum Antworten