ayuda diagonal principal y secundaria phyton 3

Iniciado por papess, 13 Mayo 2019, 13:55 PM

0 Miembros y 1 Visitante están viendo este tema.

papess

Hola, soy estudiante de ing. informática y estamos usando python 3,  nos pidieron crear un algoritmo que creara una matriz. hasta ahí creo que todo bien ... pero tengo problemas o bien nose como sacar las diagonales  :-( ... si me pueden ayudar con esto pls.
Les dejo lo que tengo:

fila = 3
columna = 3

matriz =[]
for i in range(fila):
    matriz.append([0]*columna)
print (matriz)

##les da valor a la matriz 1a9
contador=1
for i in range(fila):
    for j in range(columna):
        matriz[j]=contador
        contador+=1
print (matriz)

## ordena la matriz

for i in matriz:
    print (i)
----------- imprimiria lo siguiente, hasta el momento

[[0.0.0],[0.0.0],[0.0.0]]
[[1.2.3],[4.5.6],[7.8.9]]

[1.2.3]
[4.5.6]
[7.8.9]

necesito agregarle el algoritmo que me imprima [1.5.9] .. [3.5.7]
gracias por la ayuda :'(

Segadorfelix

#1
Había un error en el código inicial. En lugar de:

matriz[j]=contador

era:

matriz[i][j]=contador

Código (python) [Seleccionar]

fila = 3
columna = 3

matriz =[]
for i in range(fila):
   matriz.append([0]*columna)
print (matriz)

##les da valor a la matriz 1a9
contador=1
for i in range(fila):
   for j in range(columna):
       matriz[i][j]=contador
       contador+=1
print(matriz)

## ordena la matriz

for k in matriz:
   print (k)

##Diagonal principal
a=[]
for i in range(fila):
   a.append(matriz[i][i])
print(a)

##Diagonal secundaria
a=[]
for i in range(fila):
   a.append(matriz[i][(columna-1)-i])
print(a)


La propiedad que es buena para este tipo de problemas, es tomar en cuenta la estructura de la matriz.

Los elementos de la diagonal principal, siempre serán del tipo fila 1 columna 1, fila 2, columna 2. El 'indice' del elemento de la diagonal, coincide tanto en columnas como en filas.

Los elementos de la diagonal secundaria, son similares a los de la diagonal principal, en que su 'indice' de fila es idéntico, y la diferencia radica, en que parte del ultimo elemento de la fila, y luego va bajando.

Diagonal secundaria, de matriz n*n:

  • fila 1, columna n
  • fila 2, columna n-1
  • fila 3, columna n-2

papess