Cuadrado mágico JAVA

Cuadrados mágicos de orden impar .JAVA

Cuadrados mágicos de orden impar, comenzando en la casilla central de la primera fila con el primer número, se rellena la diagonal quebrada con los siguientes en sentido NO (ó NE). Completada la primera diagonal se desciende una posición y se rellena la segunda en el mismo sentido que la anterior, repitiéndose el paso anterior con el resto de diagonales hasta completar el cuadrado. Las Ternas pitagóricas y los Cuadrados mágicos se ordenan en forma precisa en los Cuadrados mágicos de orden impar.

La resolución en Java

public class cuadradoMagico{
public static void main(String []args){
int n=9;//Tamanho del cuadrado
int [][]cuadrado=new int[n] [n];
ceros(cuadrado);// lo rellenamos de ceros
cuadrado(n,cuadrado);//lo rellenamos
imprimir(cuadrado);
}
public static void cuadrado(int n, int[][]cuadrado){

int c=n/2;
int f=0;
int ci=0, fi=0;

cuadrado[f][c]=1;

for(int i=2;i<=n*n;i++){
if (f-1<0){
f=n-1;
}else{
f=f-1;
}
if (c+1>n-1){
c=0;
}else{
c=c+1;
}
if (cuadrado[f][c]==0){
cuadrado[f][c]=i;
fi=f;ci=c;//guardamos la ultima posicion rellenada
}
else{
f=fi+1;c=ci;//recuperamos la ultima posicion rellenada
cuadrado[f][c]=i;
}
}

}
public static void ceros(int[][] c){
for (int i=0;i<c.length;i++){
for(int j=0;j<c.length;j++){
c[i][j]=0;
}

}
}
public static void imprimir(int[][] c){
for (int i=0;i<c.length;i++){
for(int j=0;j<c.length;j++){
System.out.print(c[i][j]+”\t”);
}
System.out.println();

}
}
}

Ver el ejemplo compilado y para ejecutar

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos. Contiene enlaces a sitios web de terceros con políticas de privacidad ajenas que podrás aceptar o no cuando accedas a ellos. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Más información
Privacidad