JavaScript - Hola, alguna orientacion con respecto a este ejercicio que estoy desarrollando?

 
Vista:
sin imagen de perfil
Val: 20
Ha aumentado su posición en 3 puestos en JavaScript (en relación al último mes)
Gráfica de JavaScript

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...).

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
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
1
Responder
Imágen de perfil de Alejandro
Val: 1.448
Plata
Ha mantenido su posición en JavaScript (en relación al último mes)
Gráfica de JavaScript

Hola, alguna orientacion con respecto a este ejercicio que estoy desarrollando?

Publicado por Alejandro (532 intervenciones) el 19/01/2019 16:22:52
  • Alejandro se encuentra ahora conectado en el
  • chat de PHP
Trata de entender esto:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
/*
	0	1	2	3	4
0	23	6	19	2	15
1	10	18	1	14	22
2	17	5	13	21	9
3	4	12	25	8	16
4	11	24	7	20	3
*/
 
//Diagonal_1:	0,0	1,1	2,2	3,3	4,4
suma=0;
for(i=0; i<=4; i++){
	for(j=0; i<5; i++){
		suma += matriz[i][j];
	}
}
 
//Diagonal_2:	0,4	1,3	2,2	3,1	4,0
suma=0;
for(i=0; i<=4; i++){
	for(j=4; j>=0; j--){
		suma += matriz[i][j];
	}
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
sin imagen de perfil
Val: 20
Ha aumentado su posición en 3 puestos en JavaScript (en relación al último mes)
Gráfica de JavaScript

Hola, alguna orientacion con respecto a este ejercicio que estoy desarrollando?

Publicado por Jorge (7 intervenciones) el 19/01/2019 18:08:00
Gracias por tu respuesta, me refiero a las diagonales en la funcion esMagica, ya que segun un amigo los bucles estarian de mas ya que he de comprobar una UNICA diagonal cada vez, entonces no se a que se refiere....
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