hola a todos
como puedo recorrer una matriz de forma diagonal??
es decir que en vez de pasar por las filas y columnas , se recorra por TODAS las diagonales
matrices = arreglo de dos dimensiones. arrays
por favor sus sugerencias
gracias
Actualizar:no es que me hgan la tarea es que den sugerencia NO PIDO CODIGOS
pero es que algunos tontos no entienden
Copyright © 2025 Q2A.ES - All rights reserved.
Answers & Comments
Verified answer
Piensa en cómo lo haces con lápiz y papel:
Recorriendo sólo las diagonales que hay bajo la diagonal principal, terminas recorriendo toda la matriz. ¿Por qué? Bien, esto es exactamente lo que haces:
1. Para cada fila de la matriz, te sitúas en la primera columna y vas recorriendo la diagonal correspondiente.
2. Llegas a la última fila, así que el paso siguiente es continuar con la siguiente columna pero desde la primera fila.
3. Haces esto hasta que llegas a la última columna, y luego empiezas a trabajar con la siguiente diagonal.
Bien, eso es lo que haces cuando trabajas sobre papel. Pero ¿cómo implementarías algo así en un ordenador? La solución es sencilla: imagina cómo funciona un contador cíclico; es decir, aquel que, antes de llegar a un límite N, empieza otra vez desde cero. Funciona como un contador normal, sólo que el incremento no es:
i = i + 1
sino:
i = (i + 1) mod N,
es decir, el módulo entre i + 1 y N. Esto implica que, si i + 1 < N, entonces el contador se incrementa normalmente. La excepción aparece cuando i + 1 >= N; en ese caso, se calcula el resto de la división entera entre (i + 1) y N, y, evidentemente, este resto está comprendido entre 0 y N - 1. De esta manera, cuando tu contador llega a N, vuelve a empezar.
Esto es lo que tienes que hacer para contar las filas. Si tu matriz es M y tu contador de diagonales es k, no debes recorrer los elementos de la matriz con
M[i+k, i],
sino con
M[(i+k) mod N, i]
siendo N el orden de la matriz cuadrada.
Suerte.
para ( i = 0 hasta i < numerofilas)
para ( j = o hasta i< numeroColumnas)
si ( i = j)
aqui va el codigo de lo que quieres que haga con las casillas
de la diagonal, la obtienes asi matriz[i][j]
fin_si
fin_para
fin_para
usa un for ("desde" en algoritmos)
asumo que si tiene diagonal es por q es una matriz cuadrada asi que
for(i=0;i<=n(n es numero de filas o columnas); i++)
aca simplemente pones matriz A(i)(i) la cual es el elemento A que esta en la fila i y a la vez en la columna i por lo tanto es de la diagonal; claro esta q no es en () sino en corchetes...