Brauche dringend Hilfe!
-
Ich soll ein Java Programm schreiben, welches ein magisches Quadrat mit ungerader Seitenlänge ausgibt (3x3,5x5,7x7,....)
Ich hab zwar einen Ansatz, komme aber nicht weiter
Es soll nach diesem Schema programmiert sein:
Man fängt mit der 1 in der 1 Zeile, mittlere Spalte an. Die nächste Zahl kommt immer rechts oben (also zeile+1 spalte+1), falls man aus dem array hinausläuft, muss man genau auf der gegenüberliegenden Seite wieder anfangen.[ ][1][ ]
[ ][ ][ ]
[ ][ ][2]public class magicsquare { public static void main(String args[]){ int n = 5; int magic[][] = new int[n][n]; int z = n-1; //Zeile int s = n/2; //Spalte magic[z][s] = 1; for (int i = 2; i <= n*n; i++) { if(magic[z+1][s+1]==0){ z++; s++; } else { z--; } magic[z][s] = i; } for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { System.out.print(magic[i][j] + " "); } } } }
-
Hi,
so ungefähr passt das ja schon.
Du musst eigentlich nur noch den Seitenwechsel einbauen:public class magicsquare { public static void main(String args[]){ int n = 5; int magic[][] = new int[n][n]; int z = n-1; //Zeile int s = n/2; //Spalte for (int i = 1; i <= n*n; i++) { if (magic[z][s] != 0) { // Eine Zeiel nach oben gehen z--; } magic[z][s] = i; z--; // hoch if (z < 0) { // Falls außerhalb z = n-1; } s++; // rechts if (s == n) { // Falls außerhalb s = 0; } } for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { System.out.print("[" + magic[i][j] + "]\t"); } System.out.println(); } } }