Me podeis explicar este codigo un poquito porque no lo acabo de entender bien porfavor
Publicado por dev3rt (22 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,
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();
}
}
}
Valora esta pregunta
0