lunes, 24 de febrero de 2014

Unidad 3 Ejercicio 24: matriz latina

Hacer un programa que genere e imprima un cuadrado latino de orden 10 (matriz 10x10). Un cuadradado latino de orden n es aquel en el que la primera fila tiene los nº naturales del 1 a n,  y cada una de las filas restantes de la matriz es igual a su fila superior desplazada una posicion hacia la derecha, entrando por la izquierda el número que se pierde en el desplazamiento. Por ejemplo, un cuadrado latino de orden 5 es:

 1  2  3  4  5
 5  1  2  3  4
 4  5  1  2  3
 3  4  5  1  2
 2  3  4  5  1



/*
* 24. Hacer un programa que genere e imprima un cuadrado latino de orden 10
* (matriz 10x10).
* Un cuadradado latino de orden n es aquel en el que la primera fila tiene
* los nº naturales del 1 a n,  y cada una de las filas restantes de la matriz
* es igual a su fila superior desplazada una posicion hacia la derecha,
* entrando por la izquierda el número que se pierde en el desplazamiento.
* Por ejemplo, un cuadrado latino de orden 5 es:

1  2  3  4  5
5  1  2  3  4
4  5  1  2  3
3  4  5  1  2
2  3  4  5  1

*/
package unidad3ejercicio24;

/**
*
* @author Juan
*/
public class Unidad3Ejercicio24 {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        int FILAS = 10;
        int COLS = 10;
        int matriz[][]= new int [FILAS][COLS];
       
        for (int fil = 0; fil < FILAS; fil++) {
            for (int col = 0; col < COLS; col++) {
                //si es la primera fila
                if (fil==0) matriz[fil][col]=col+1;
                //si no, si es la primera columna
                else if(col==0) matriz[fil][col]= matriz[fil-1][COLS-1];
                // para el resto de casos
                else matriz[fil][col]= matriz[fil-1][col-1];
            }
        }
       
        for (int i = 0; i < FILAS; i++) {
            for (int j = 0; j < COLS; j++) {
                if (matriz[i][j]<10) System.out.printf("   %d",matriz[i][j]);
                else System.out.printf("  %d",matriz[i][j]);
            }
            System.out.println();
        }
       
   
    }
}