Hola, alguna orientacion con respecto a este ejercicio que estoy desarrollando?
Publicado por Jorge (7 intervenciones) el 19/01/2019 14:38:48
Les dejo el enunciado y a continuacion lo que he logrado hacer, trata de una matriz magica y lo que tengo como duda es el tema de las diagonales...Gracias!
Se dice que una matriz cuadrada es mágica cuando todas las filas, todas las columnas y las dos diagonales suman lo mismo. Diseñad una función para determinar si una matriz cuadrada es mágica o no. Utilizad las funciones de los ejercicios anteriores. La función recibirá como parámetros la matriz y un entero que indique la dimensión. El siguiente es un ejemplo de matriz mágica de 5x5(Es el que tengo en la matriz del ejercicio...).
Se dice que una matriz cuadrada es mágica cuando todas las filas, todas las columnas y las dos diagonales suman lo mismo. Diseñad una función para determinar si una matriz cuadrada es mágica o no. Utilizad las funciones de los ejercicios anteriores. La función recibirá como parámetros la matriz y un entero que indique la dimensión. El siguiente es un ejemplo de matriz mágica de 5x5(Es el que tengo en la matriz del ejercicio...).
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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
<!DOCTYPE html>
<html lang="es">
<head>
<title>Ejercicio 15</title>
<meta charset="utf-8">
<style type="text/css">
table, td{
font-size: 14pt;
border: 2px solid black;
}
</style>
</head>
<body>
<script type="text/javascript">
var dimension,
matriz=[
[23,6,19,2,15],
[10,18,1,14,22],
[17,5,13,21,9],
[4,12,25,8,16],
[11,24,7,20,3]
];
function sumaFila( matriz, N ,f){
var suma=0;
for(var x=0;x<N;x++){
suma += matriz[x][f-1];
}
return suma;
}
function cesima(matriz, N, C){
var suma = 0;
for(var i=0;i<N;i++){
suma += matriz[C-1][i];
}
return suma;
}
function diagonalPrimera(matriz, N){
var sumaDiagonal = 0;
for(var y =0; y<N; y++){
sumaDiagonal += matriz[y][y];
}
return sumaDiagonal;
}
function diagonalSegunda(matriz, N){
var sumaDiagonal = 0;
for(var h =0; h<N; h++){
sumaDiagonal += matriz[h][N-1-h];
}
return sumaDiagonal;
}
//Funcion que convoca a las otras...
function esMagica(matriz, N){
var candidato = sumaFila(matriz, N, 1);//Declaro la primera variable
for(var z =2;z<=N;z++){ //Se inicia con z = 2 ya que la primera fila fue sumada
if(candidato!=sumaFila(matriz, N, z)){//Aca pregunto si la suma de la primera fila es distinta de la fila que se tomo en el bucle FOR
return false;
}
}
for(var a=1;a<N;a++){
if(candidato!=cesima(matriz, N, a)){
return false;
}
}
for(var b=0;b<1;b++){
if(candidato!=diagonalPrimera(matriz, N, b)){
return false;
}
}
for(var c=0;c<1;c++){
if(candidato!=diagonalSegunda(matriz, N, c)){
return false;
}
}
return true;
}
//Formulo pregunta
dimension = parseInt(prompt("ingrese un numero"));
//Genero tabla
document.write("<table>");
for(var t=0;t<dimension;t++){
document.write("<tr>");
for(var s=0;s<dimension;s++){
document.write("<td>"+ matriz[t][s] + "</td>");
}
document.write("</tr>");
}
document.write("</table>");
if(esMagica(matriz, dimension) === true){
document.write("La matriz es magica" );
}else{
document.write("La matriz no es magica");
}
</script>
</body>
</html>
Valora esta pregunta


1