Java - Me podeis explicar este codigo un poquito porque no lo acabo de entender bien porfavor

   
Vista:

Me podeis explicar este codigo un poquito porque no lo acabo de entender bien porfavor

Publicado por dev3rt (7 intervenciones) el 09/04/2016 21:09:40
Enunciado:Un cuadrado mágico es la disposición de una serie de números enteros en una mesa cuadrada o
matriz de forma que la suma de los números por columnas, filas y diagonales sea la misma, la
constante mágica. Habitualmente, los números empleados para rellenar las casillas son consecutivos
del 1 n², siendo n el número de columnas y filas del cuadrado.
Usted debe hacer un programa en Java que pida un tamaño (N), la cual siempre será impar (no es necesario
hacer la validación) y debe mostrar el cuadrado mágico asociado a esa medida.
entrada
Un número N, con N> = 1 y impar, que indicará la cantidad de filas y de columnas.
salida
Tantas filas de números como indique el valor de N. Los números de cada fila estarán, separados
por espacios. Cada número de la fila representará un número de la celda de una fila del cuadrado
mágico. Los números del cuadrado serán números entre 1 y n2, sin repetidos. La suma de los
números de cada fila, de cada columna y de la diagonal principal que sumar el mismo (la
suma será un valor igual a n * (n2 + 1) div 2).

Ejemplo entrada
3
ejemplo salida

816
357
492


Me lo podéis explicar un poco desde donde indico con comentarios por favor,
un saludo cordial,

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
import java.util.Scanner;
public class CuadradosMagicos {
 
 
    public static void main(String[] args) {
 
        Scanner scan = new Scanner(System.in);
        int n; // la mida del cuadrado
        int[][] cuadrado; // Variable que hará referencia al cuadrado
        int fila, col;
        System.out.print("Introduce la mida del cuadrado (impar,'n'): ");
        n = scan.nextInt();
        cuadrado = new int[n][n]; // creamos un array de dos dimensiones 
 
        //DESDE AQUI
        //A partir de aqui no entiendo el codigo me lo podéis explicar porque 
        // lo he echo pero lo quiero entender,espero vuestra ayuda
        fila = 0;
        col = n / 2;
        for (int i = 1; i <= n * n; i++) {
            cuadrado[fila][col] = i;
            col++;
            fila--;
            if ((fila < 0 && col == n)) {
                fila += 2;
                col--;
            }
 
            if (col == n) {
                col = 0;
            }
 
            if (fila < 0) {
                fila = n - 1;
            }
 
            if (cuadrado[fila][col] != 0) {
                fila += 2;
                col--;
            }
        }
 
        //HASTA AQUI el codigo no lo entiendo mucho
 
        for (fila = 0; fila < n; fila++) {
            for (col = 0; col < n; col++) {
                System.out.printf("%d ", cuadrado[fila][col]);
 
}
System.out.println();
        }
    }
}

Captura-de-pantalla-2016-04-09-a-las-21.07.04
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Me podeis explicar este codigo un poquito porque no lo acabo de entender bien porfavor

Publicado por arck (145 intervenciones) el 11/04/2016 14:28:26
¿lo has hecho tu y no lo entiendes?

Ejecuta la aplicación en modo debug y ve paso por paso viendo las variables y que datos generan.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Me podeis explicar este codigo un poquito porque no lo acabo de entender bien porfavor

Publicado por dev3rt (7 intervenciones) el 11/04/2016 21:22:24
No me muestra nada,con netbeans.
Pregunto si puedes ayudarme sino no pasa nada,
porque yo no tengo mucha lógica,déjalo no te molestes.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar