1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team-Mitglieder
    4. Trophäen
    5. Mitgliedersuche
  4. Tutorial Bereich
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Lexikon
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

Übergebene Matrix auf Symmetrie prüfen

  • PeterMller
  • 20. April 2017 um 08:30
  • Unerledigt
  • PeterMller
    1
    PeterMller
    Mitglied
    Punkte
    10
    Beiträge
    1
    • 20. April 2017 um 08:30
    • #1

    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

    Code
    public static boolean isSymmetric(int[][] m)
        {
            int laenge = 0;
            boolean sym = false;
    
            if(m == null)
            {
                sym = false;
            }
            else
            {
                int[][] trans = new int[m[0].length][m.length];
                for(int l = 0; l < m.length; l++)      //Das längste Element des Arrays auslesen
                {
                    if(laenge < m[l].length)
                    {
                        laenge = m[l].length;
                    }
                }
                for(int i = 0; i < m.length; i++)
                {
                    if(m[i] == null)
                    {
                        sym = false;
                    }
                    else
                    {
                        if(m.length == m[i].length)
                        {
    
                            for(int k = 0; k < m[0].length; k++)
                            {
                                for(int j = 0; j < m.length; j++)
                                {
                                    trans[k][j] = m[j][k];
    
                                        if(trans[k][j] == m[j][k])
                                        {
                                        sym = true;
                                        }
                                        else
                                        {
                                            sym = false;
                                        }
                                }
                            }
                        }
                        else
                        {
                            sym = false;
                        }
                    }
                }
            }
            return sym;
        }
    Alles anzeigen

    Einmal editiert, zuletzt von PeterMller (20. April 2017 um 08:37)

  • calculator
    3
    calculator
    Mitglied
    Reaktionen
    8
    Punkte
    93
    Beiträge
    17
    • 20. April 2017 um 10:39
    • #2

    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
    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.

  • Maximilian Rupp 27. Dezember 2024 um 00:26

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!

Benutzerkonto erstellen Anmelden

Tags

  • problem
  • java
  • array
  • matrix

Rechtliches

Impressum

Datenschutzerklärung