Moin zusammen,
ich sitze gerade an der folgenden Aufgabe:
"Ein magisches Quadrat ist eine quadratische Matrix, für die die Summe jeder Zeile, jeder Spalte und der beiden Diagonalen denselben Wert ergibt. Lesen sie eine Zahl n sowie eine n*n Matrix ein und stellen sie fest, ob es ein magisches Quadrat ist".
Hier mein selbst programmierter Code (ich bin Einsteiger, sicherlich kann man den Code an vielen Stellen optimieren):
Das zweite Semikolon nach return zeigt er mir als zu viel an, lösche ich das färbt er mir fast meine ganze Methode rot. Ich suche schon lange rum und finde das Problem nicht.
Ob der Code jetzt im Einzelnen richtig ist weiß ich nicht, das konnte ich noch nicht testen.
Ich bedanke mich schon mal für eure Hilfe!
PS: Nicht wundern, ich muss mit den Klassen von Mössenböck arbeiten, Autor von "Sprechen Sie Java?".
ich sitze gerade an der folgenden Aufgabe:
"Ein magisches Quadrat ist eine quadratische Matrix, für die die Summe jeder Zeile, jeder Spalte und der beiden Diagonalen denselben Wert ergibt. Lesen sie eine Zahl n sowie eine n*n Matrix ein und stellen sie fest, ob es ein magisches Quadrat ist".
Hier mein selbst programmierter Code (ich bin Einsteiger, sicherlich kann man den Code an vielen Stellen optimieren):
Java:
static int[][] magic(int[][] a) {
int[][] b = new int[a.length][a[0].length];
int i, j, sumZeile1, sumZeile2, sumSpalte1, sumSpalte2, sumDiag1, sumDiag2;
for (i = 0, j = 0; j < a[0].length; j++){
sumZeile1 = sumZeile1 + a[i][j]; }
do {
for (i++, j++; j < a[0].length; j++){
sumZeile2 = sumZeile2 + a[i][j]; }
}while (sumZeile1 == sumZeile2);
if (sumZeile1 != sumZeile2)
{Out.print("Es handelt sich nicht um ein Magisches Quadrat"); break;}
for (i = 0, j = 0; i < a[0].length; i++){
sumSpalte1 = sumSpalte1 + a[i][j]; }
do {
for (i++, j++; i < a[0].length; i++){
sumSpalte2 = sumSpalte2 + a[i][j]; }
}while (sumSpalte1 == sumSpalte2);
if (sumSpalte1 != sumSpalte2)
{Out.print("Es handelt sich nicht um ein Magisches Quadrat"); break;}
for (i = 0, j = 0; i < a[0].length; i++, j++){
sumDiag1 = sumDiag1 + a[i][j]; }
for (i = a.length - 1, j = a.length - 1; i == -1; i--, j--){
sumDiag2 = sumDiag2 + a[i][j]; }
if (sumDiag1 != sumDiag2)
{Out.print("Es handelt sich nicht um ein Magisches Quadrat"); break;}
if (sumZeile1 == sumSpalte1 && sumZeile1 == sumDiag1){
{Out.print("Es handelt sich hier um ein Magisches Quadrat"); break;}
}
return b;
}
}
public static void main(String[] args) {
int i, m, n;
Out.print("Geben Sie eine Zahl für die Länge der Matrix ein. Diese ist gleichzeitig die Breite.");
int[][] a = new int[i = In.readInt()][i];
Out.print("Geben Sie nacheinander die einzelnen Werte der Matrix ein.");
for (m = 0; m < i; m++)
for (n = 0; n < i; n++)
a[m][n] = In.readInt();
}
}
Das zweite Semikolon nach return zeigt er mir als zu viel an, lösche ich das färbt er mir fast meine ganze Methode rot. Ich suche schon lange rum und finde das Problem nicht.
Ob der Code jetzt im Einzelnen richtig ist weiß ich nicht, das konnte ich noch nicht testen.
Ich bedanke mich schon mal für eure Hilfe!
PS: Nicht wundern, ich muss mit den Klassen von Mössenböck arbeiten, Autor von "Sprechen Sie Java?".