Magische Quadrat.
-
Magische Quadrat. Ein magisches Quadrat ist eine quadartische Matrix,
für die die Summe jeder Zeile, jeder Spalte und der beiden Diagonalen
selbst den gleichen Wert ergibt. Lesen sie eine Zahl n sowie eine
nxn Matrix ein. Schreiben Sie eine Methode welche prüft ob eine Matix
ein magisches Quadrat darstellt.
Wer kann mir helfen
-
Fang erst einmal an ... bei konkretem Problem kann dir hier geholfen werden.
-
Dies ist eine Aufgabe von meiner Schule die in Java lösen soll. Und ich kriegs nicht auf der reihe.
-
Ist mir schon klar, dass das deine Hausaufgaben sind. Hier wird dir aber keiner die Arbeit abnehmen. Erstelle dir erst mal ein Konzept und fange die Programmierung an. Wenn du dann konkrete Probleme in Java hast helfen wir dir hier gerne weiter
-
Also diesen schema habe ich.
4 9 2
3 5 7
8 1 6
Wenn mann drei zahlen addiert kommt man immer auf 15 links => rechts
runter => hoch. Diese prüfungen habe ich schon aber ich weiss nicht wie ich das diagonal machen soll also zb 4 + 5 + 6?/* Magische Quadrat. Ein magisches Quadrat ist eine quadartische Matrix, für die die Summe jeder Zeile, jeder Spalte und der beiden Diagonalen selbst den gleichen Wert ergibt. Lesen sie eine Zahl n sowie eine nxn Matrix ein.Schreiben Sie eine Methode welche prüft ob eine Matix ein magisches Quadrat darstellt. */ class magisches_quadrat { public static void main (String args[]) { boolean ergebnis = true; int i, x, y; int hilf = 0; int pruefe = 0; int mq [] [] = { {4,9,2}, // Werte zum Prüfen der Methode {3,5,7}, {8,1,6} }; // Zeilen prüfung ergebnis = true; System.out.println( " \nZeilen " ); for(i=0; i < mq.length ; i++ ) { pruefe = 0; for(x=0; x < mq[i].length ; x++ ) { if ( i == 0 ) { hilf += mq[0] [x]; // System.out.println( " Ergebniss der ersten Zeile = " + hilf ); } else { pruefe += mq[i] [x]; } System.out.println( "Angegebene Werte = " + mq[i][x] ); } if (x != 0) { if(pruefe != hilf) { ergebnis = false; } } } System.out.println( " \nSind die Zeilen korekt? " + ergebnis ); // Spalten Prüfung System.out.println( " \nSpalten " ); for(i=0; i < mq.length ; i++ ) { pruefe = 0; for(x=0; x < mq[i].length ; x++ ) { if ( i == 0 ) { hilf += mq[x] [0]; // System.out.println( " Ergebniss der ersten Zeile = " + hilf ); } else { pruefe += mq[x] [i]; } System.out.println( "Angegebene Werte = " + mq[x][i] ); } if (i != 0) { if(pruefe != hilf) { ergebnis = false; } } } System.out.println( " \nSind die Spalten korekt? " + ergebnis ); } }
-
Du lässt einfach eine Schleife über die Spalte laufen und nimmst als Zeilenindex den selben Schleifenwert wie für den Spaltenindex. Das einmal vor und einmal zurück dann hast du beide Diagonalen
-
nicht ganz...
Für die Hauptdiagonale stimmt das - für die Nebendiagonale nicht.
Schau dir einfach mal die Indizes an:
0,0 0,1 0,2
1,0 1,1 1,2
2,0 2,1 2,2
Bei der Nebendiagonale musst du den Laufindex der Zeile vom maximalen Index der Spalte abziehen - dann gehts.
basedow