viernes, 14 de marzo de 2014

Unidad 3 Ejercicio 27: Cuadrado Mágico

Cuadrado Mágico


/*
* 27. Un cuadrado mágico de orden N es una matriz cuadrada de dimensiones NxN
* que contiene a los números naturales de 1 a N2, tal que la suma de cualquier
* columna, fila o diagonal es siempre la misma. El algoritmo para construir el
* cuadrado mágico es:

1.- El número 1 se coloca en la casilla central de la primera fila.
2.- Cada número siguiente se coloca en la casilla correspondiente a la fila
* anterior y columna posterior.
3.- Si el número es el siguiente a un múltiplo de N no se aplica la regla 2,
* sino que se coloca en la casilla de la fila posterior en la misma columna.
4.- La fila anterior a la primera es la última.
5.- La columna posterior a la última es la primera.

*/
package unidad3ejercicio27;
import java.util.Scanner;
/**
*
* @author Juan
*/
public class Unidad3Ejercicio27 {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        Scanner leo = new Scanner(System.in);
        int col,fil,num;
        int matriz[][];
      

        System.out.println("Introduzca tamaño de la matriz");
        num=leo.nextInt();
        matriz = new int[num][num];
        col=(num/2);
        fil=0;
      
        for (int i = 1; i <= (num*num); i++) {
            matriz[fil][col]=i;
          
            if( (i)%num!=0)
            {
                --fil;
                ++col;
            }
            else ++fil;
            if (fil==-1) fil=num-1;
            else if (fil==num) fil=0;
            if (col==(num)) col=0;
          
        }
      
        for (int i = 0; i < num; i++) {
            for (int j = 0; j < num; j++) {
                System.out.printf("\t %d",matriz[i][j]);
            }
            System.out.println();
        }

    }
}