Matrix auf Symmetrie überprüfen

treask

Mitglied
Hallo,

ich habe hier folgenden Code:

Java:
int mat[][] = new int[][] {{2,4,6,8},{4,14,8,6},{6,8,14,4},{8,6,4,2}}; 
 
        int x = mat.length; 
        int y = mat[0].length;
    
        int[][] sym = new int[x][y];
    
        if (x == y) {
           if (y == x)

           System.out.println("true");
}

Aufgabe ist es die Matrix auf Symmetrie zu überprüfen. Was ich gemacht habe ist zwar ausführbar, aber glaube ich nicht das was richtig ist. Zum Beispiel zeigt er an, dass die Matrix symmetrisch ist, wenn man Elemente einer Zeile entfernt, außer wenn man die erste Zeile verändert. Dann gibt das Programm aber eine leere Zeile aus, obwohl ich das ganze auch noch mit einer if-Schleife überprüfen lies, ob die Zeilen und Spalten ungleich sind. Mein Programm zeigt glaube ich auch nur an, ob eine Matrix quadratisch ist was an sich unwichtig ist, weil das ja Vorraussetzung für Symmetrie ist.

Das ganze muss man bestimmt mit einen Suchalgorithmus machen, aber wie soll das funktionieren? Kann mir da jemand helfen? Gibt es da eine "einfache" Möglichkeit zur Überprüfung, ob die 1. Zeile mit der 1. Spalte übereinstimm, die 2. Zeile mit 2. Spalte usw. identisch sind? Das hört sich für mich etwas zu umständlich an oder denk ich da zu kompliziert?

Danke schon mal im vorraus.

MfG
 

Thallius

Top Contributor
Du musst ja nachsehen ob die Länge des Arrays gleich der Länge ALLER seine Inhalte ist. Du überprüfst aber nur die Länge des ersten Inhalts. Du musst eine Schleife über die Länge des Arrays machen und jeden einzelnen Inhalt mit der Länge des Arrays überprüfen und nur wenn alle gleich sind ist es true.

Gruß

Claus
 

stg

Top Contributor
Ich hab dir mal die Symmetrie-Abfrage zusammengebastelt und einige Systemausgaben mit eingebaut, damit du verstehst, was da genau passiert. Eine Überprüfung, ob überhaupt eine quadratische Matrix vorliegt, hab ich extra noch nicht mit eingebaut ... das kannst du dann hoffentlich bestimmt selbst?

Schau mal hier:
Java:
public class Matrix {

    public static void main(String [] args) {
        int mat[][] = new int[][] {{2,4,6,8},{4,14,8,6},{6,8,14,4},{8,6,4,2}}; 
        System.out.println("Ist symmetrisch? "+isSymmetric(mat));
    }
    
    public static boolean isSymmetric(int [] [] matrix) {
        for(int zeile = 0; zeile < matrix.length; zeile++) { // Für jede Zeile der Matrix
            System.out.println("Überprüfe Zeile "+zeile+": ");
            for(int spalte = 0; spalte < zeile; spalte++) {  // Für jede Spalte in der aktuellen Zeile bis hin zur Diagonale
                System.out.print("["+zeile+"]["+spalte+"] = "+matrix[zeile][spalte]+" /"+"["+spalte+"]["+zeile+"] = "+matrix[spalte][zeile]);
                if(matrix[zeile][spalte] != matrix[spalte][zeile]) {
                    System.out.println(" stimmen nicht überein!");
                    System.out.println("Abbruch! Matrix ist nicht symmetrisch!");
                    return false;
                }
                else {
                    System.out.println(" stimmen überein!");
                }
            }
        }
        System.out.println("Matrix ist symmetrisch!");
        return true;
    }
}

Ausgabe auf der Konsole ist dann:
Code:
run:
Überprüfe Zeile 0: 
Überprüfe Zeile 1: 
[1][0] = 4 /[0][1] = 4 stimmen überein!
Überprüfe Zeile 2: 
[2][0] = 6 /[0][2] = 6 stimmen überein!
[2][1] = 8 /[1][2] = 8 stimmen überein!
Überprüfe Zeile 3: 
[3][0] = 8 /[0][3] = 8 stimmen überein!
[3][1] = 6 /[1][3] = 6 stimmen überein!
[3][2] = 4 /[2][3] = 4 stimmen überein!
Matrix ist symmetrisch!
Ist symmetrisch? true
 

treask

Mitglied
Danke, das ist genau der Ansatz den ich gebraucht habe.

Zeige ich denn nicht durch meinen Code nicht, ob das ganze quadratisch ist oder nicht? Vergleicht es nicht die Anzahl der Zeilen und Spalten? Hier ist mal das was ich probiert habe:

Java:
    int zeilen_test = mat.length; 
    int spalten_test = mat[0].length;

      if (zeilen_test == spalten_test) {
      if (spalten_test == zeilen_test)
      System.out.println("Die Matrix ist quadratisch.");
      
      else {
        if (spalten_test != zeilen_test) {
        if (zeilen_test != spalten_test)
        System.out.println("Die Matrix ist nicht quadratisch."); 
        } 
      }  
    }

Den ersten Teil der if-Schleife klappt problemlos, aber wenn die Zeilen und Spalten nicht übereinstimmen, dann wird da nichts ausgeben statt, dass es nicht quadratisch ist. Wo habe ich da den Fehler gemacht?

Was für einen Befehl kann ich einfügen, wenn ich beispielsweise möchte, dass der nachfolgende Code ignoriert werden soll? Beispielsweise möchte ich, dass die Symmetrieüberprüfung nur stattfinden soll, wenn die Matrix quadratisch ist.
 

Androbin

Bekanntes Mitglied
Java:
    int zeilen_test = mat.length; 
    int spalten_test = mat[0].length;

      if (zeilen_test == spalten_test) {
      if (spalten_test == zeilen_test)
      System.out.println("Die Matrix ist quadratisch.");
      
      else {
        if (spalten_test != zeilen_test) {
        if (zeilen_test != spalten_test)
        System.out.println("Die Matrix ist nicht quadratisch."); 
        } 
      }  
    }
Das ist totaler quatsch!
Wenn a == b ist, dann MUSS auch b == a sein!
Und wenn a != b ist, dann ist auch b != a, oder?
Also WIESO prüfst du das unnötigerweise zweimal?
 

njans

Top Contributor
Java:
 if (zeilen_test == spalten_test) {
if (spalten_test == zeilen_test)

??? Äquivalenz ist symmetrisch.

Zu deinem Problem. Klammer mal deine Ifs. dann siehst du auch worauf sich das else bezieht.
 

arilou

Bekanntes Mitglied
In Java müssen die Unter-Dimensionen eines Arrays nicht gleichgroß sein:
Java:
int[][] ar ;
ar = new int[5][] ; // erst mal Platz für 5 Zeilen schaffen; Anzahl der Spalten bleibt noch unbestimmt.
ar[0] = new int[] { -1 , 10 , 2 } ; // erste Zeile, 3 Elemente/Spalten
ar[1] = new int[] { 0 } ; // zweite Zeile, nur 1 Element/Spalte
ar[2] = null ; // auch das darf zwischendrinn vorkommen!
ar[3] = new int[] {} ; // formal ein Array, aber mit 0 Elementen/Spalten ; das ist != null
ar[4] = new int[] { 2 , -2 , 2 , 100 , 58 } ; // fünfte Zeile, 5 Elemente/Spalten
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
I matrix aufgabe Java Basics - Anfänger-Themen 22
L Zweidimensionaler Array; n x m - Matrix überprüfuen Java Basics - Anfänger-Themen 35
C Matrix mit Array ausgeben Java Basics - Anfänger-Themen 6
idontknow707 Matrix nach z.B. Variable durchsuchen Java Basics - Anfänger-Themen 4
F Adjunkte Matrix erstellen Java Basics - Anfänger-Themen 3
M Matrix Java Basics - Anfänger-Themen 3
F Matrix Multiplikation Java Basics - Anfänger-Themen 3
B Dünn besetzte Matrix Java Basics - Anfänger-Themen 7
Al3xand3r01 Matrix, Nachbarelemente Java Basics - Anfänger-Themen 16
E Rückwärtsmultiplikation einer invertierten matrix Java Basics - Anfänger-Themen 2
U Dreiecks-Matrix mit Array Java Basics - Anfänger-Themen 3
Z Matrix Klasse mit Mehrdimensionalen Array (Addition, Multiplikation, to String) Java Basics - Anfänger-Themen 57
E 2D Array - char durch die Matrix "wandern" lassen Java Basics - Anfänger-Themen 7
M Matrix auf 4 Elemente untersuchen mit offenen Enden Java Basics - Anfänger-Themen 8
B Diskrete Faltung (Matrix) Randfälle Java Basics - Anfänger-Themen 8
M Matrix Elemente vergleichen Java Basics - Anfänger-Themen 11
N Quadratische Matrix inkl Summe Java Basics - Anfänger-Themen 8
J Methoden Moving a n integer matrix Java Basics - Anfänger-Themen 3
D Methoden Matrix Multiplikation Java Basics - Anfänger-Themen 27
O Matrix, Vektor Java Basics - Anfänger-Themen 9
H 2D Array, Symmetrische Matrix Java Basics - Anfänger-Themen 12
S Matrix spaltenweise befüllen Java Basics - Anfänger-Themen 1
T Zufällige Matrix in neue Matrix schreiben Java Basics - Anfänger-Themen 6
C Matrix-Werte werden nicht wie erwartet ausgegeben Java Basics - Anfänger-Themen 7
C Matrix erstellen Spaltensumme, Zeilensumme, Diagonale Java Basics - Anfänger-Themen 1
S Methoden Transponierte Matrix Java Basics - Anfänger-Themen 3
N Vererbung Submatrix mit Verweis auf Matrix erstellen Java Basics - Anfänger-Themen 9
J Matrix erstellen Java Java Basics - Anfänger-Themen 7
B Transponiertes Matrix Java Basics - Anfänger-Themen 12
J Überprüfen, ob eine 2D Matrix ein Baum ist Java Basics - Anfänger-Themen 5
C Matrix transponieren - Hilfe Java Basics - Anfänger-Themen 1
D Ausgabe einer Matrix mit System.out.println Java Basics - Anfänger-Themen 6
T Art 4 Felder Matrix Memory Java Basics - Anfänger-Themen 2
U Ist diese Methode zur Matrix Vektor Multiplikation korrekt ? Java Basics - Anfänger-Themen 5
L Matrix(Array) minimieren... Java Basics - Anfänger-Themen 9
E Matrix mit Vektor multiplizieren Java Basics - Anfänger-Themen 7
S eingegebene Matrix anzeigen Java Basics - Anfänger-Themen 4
J Matrix für Schachbrett Java Basics - Anfänger-Themen 6
G tga Datei lesen und in eine matrix umwandeln Java Basics - Anfänger-Themen 1
G Bilddaten in Matrix umwandeln Java Basics - Anfänger-Themen 1
T Eine String Matrix erstellen die eine boolean Funtion verwendet Java Basics - Anfänger-Themen 10
O Matrix Multiplizieren Java Basics - Anfänger-Themen 4
S LWJGL - Matrix vom Matrixstack laden Java Basics - Anfänger-Themen 3
V Matrix Transponieren Java Basics - Anfänger-Themen 3
V Methoden Matrix als 1D Array mit Werten füllen Java Basics - Anfänger-Themen 12
W Zweidimensionale Arrays als Matrix ausgeben Java Basics - Anfänger-Themen 8
R Matrix-Vektor-Multiplikation Java Basics - Anfänger-Themen 13
O Matrix ordnen Java Basics - Anfänger-Themen 4
M Symmetrische Matrix Java Basics - Anfänger-Themen 2
W Methoden Rang von einer Matrix mit Gauss Java Basics - Anfänger-Themen 0
U Matrix Subtrahieren Java Basics - Anfänger-Themen 12
E Input/Output convert string to two dimensional char and output = matrix Java Basics - Anfänger-Themen 2
A daten vom 1d array in 2d matrix speichern Java Basics - Anfänger-Themen 3
I Matrix überprüfen Java Basics - Anfänger-Themen 8
Z Matrix mit Vektor multiplizieren Java Basics - Anfänger-Themen 13
K Methoden Einlesen einer unbegrenzten Matrix über Konsole Java Basics - Anfänger-Themen 6
O Einlesen einer Matrix von der Console Java Basics - Anfänger-Themen 18
N Matrix/Vektoren Java Basics - Anfänger-Themen 3
N Matrix Java Basics - Anfänger-Themen 14
T Methode, die eine 2 dimensionale Matrix kopiert. Java Basics - Anfänger-Themen 16
J Matrix Java Java Basics - Anfänger-Themen 3
D 2 mehrdimensionale Matrix einlesen Java Basics - Anfänger-Themen 2
A N*N Matrix Determinante berechnen Java Basics - Anfänger-Themen 47
K Quadratische Matrix um 90° drehen Java Basics - Anfänger-Themen 5
C Programm zur Berechnung der Spur einer Matrix Java Basics - Anfänger-Themen 4
B Zeilenumbruch (zweidim. Matrix) Java Basics - Anfänger-Themen 2
O Java Matrix mal Matrix über while Schleife... Java Basics - Anfänger-Themen 10
O Transponieren einer Matrix per While-Schleife Java Basics - Anfänger-Themen 3
M Matrix - Probelm Java Basics - Anfänger-Themen 7
O 2D Matrix befüllen mit geraden Zahlen!? Java Basics - Anfänger-Themen 14
J Java Matrix befüllen Java Basics - Anfänger-Themen 5
M Matrix Matrix Multiplikation Java Basics - Anfänger-Themen 6
F Matrix Java Basics - Anfänger-Themen 11
E Array als Matrix Java Basics - Anfänger-Themen 21
G OOP Parameter Matrix Java Basics - Anfänger-Themen 2
N Matrix Klasse Java Basics - Anfänger-Themen 4
B Maske an eine Matrix anpassen Java Basics - Anfänger-Themen 5
W Matrix übergeben Java Basics - Anfänger-Themen 7
T Matrix transponieren Java Basics - Anfänger-Themen 17
W Eine Methode schreiben, ob eine Matrix eine Diagonalmatrix ist.? Java Basics - Anfänger-Themen 3
M String Datei in Float-Matrix umwandeln Java Basics - Anfänger-Themen 8
D Problem: Werte eine Matrix vergleichen! Java Basics - Anfänger-Themen 5
B Matrix Java Basics - Anfänger-Themen 2
Semox Matrix multiplizieren Java Basics - Anfänger-Themen 4
N Matrix an toString Java Basics - Anfänger-Themen 7
C Diagonale in einem NxN Matrix Java Basics - Anfänger-Themen 6
F Einträgen von Matrix zu sotieren Java Basics - Anfänger-Themen 2
D JUnit auf Matrix anwenden Java Basics - Anfänger-Themen 5
J Spezielle Matrix ausgeben ! Java Basics - Anfänger-Themen 8
S Problem bei Matrix Addition Java Basics - Anfänger-Themen 5
F matrix werte übergeben Java Basics - Anfänger-Themen 5
M Hauptdiagonale Matrix berechnen Java Basics - Anfänger-Themen 6
M Klassenerstellung für Matrix mit Rechenopperationen Java Basics - Anfänger-Themen 42
D Matrix .bat datei erstellen und öffnen Java Basics - Anfänger-Themen 2
J Matrix ausgeben Java Basics - Anfänger-Themen 9
N Matrix Matrix Produkt Java Basics - Anfänger-Themen 7
N prüfe ob etwas in einer Matrix steht... Java Basics - Anfänger-Themen 14
L rechtecke zeichnen anhand von matrix Java Basics - Anfänger-Themen 27
J Matrix aus Datei einlesen mit StreamTokenizer Java Basics - Anfänger-Themen 3
K Transponiere Matrix Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben