Buscar

MatrizesSolucoes

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

# -*- coding: cp1252 -*-
def conta(matriz,x):
 #[[0,1,2],[3,4,5],[6,7,8]]
 contador = 0
 for i in range(len(matriz)):
 for j in range(len(matriz[0])):
 if matriz[i][j] == x:
 contador += 1
 return contador
def transpor(matriz):
 #Descobre quantas linhas ha na matriz passada como parametro
 #Lembrando que uma matriz é uma lista de listas
 #onde cada posicao guarda uma linha da matriz
 #como o len() retorna o numero de posicoes / tamanho de uma variavel,
 #no caso de matrizes (listas dentro de listas) o valor retornado pelo len()
 #equivale ao número de linhas da matriz.
 Nlin = len(matriz) 
 #E em uma matriz, há pelo menos uma linha.
 #E todas as linhas possuem a mesma quantidade de itens,
 #pois o número de colunas da matriz é sempre igual para todas as linhas.
 #Então, tenho certeza que a posição matriz[0] sempre será não-nula,
 #e terá número de posições igual a todas as outras linhas da matriz (caso existam)
 #e esse número será equivalente ao número de colunas da matriz,
 #e mais uma vez, equivalente ao retorno da função len()
 #quando aplicada sobre a primeira linha da matriz
 Ncol = len(matriz[0])
 #Essa variavel vai guardar o meu resultado: a matriz transposta
 #reparem que o return la embaixo retorna ela.
 #Ela começa como uma lista vazia.
 transposta = [] 
 #Sabendo que uma matriz qualquer possui dimensões Nlin x Ncol (que eu descobri lá em cima),
 #o que eu faço aqui é dimensionar a minha matriz transposta, com dimensões invertidas (Ncol x Nlin).
 #E preencho cada posição dela com zeros (um valor default para ser substituido mais à frente). 
 #Dessa forma, eu não altero a matriz original.
 #A abordagem será ir calculando cada elemento da transposta consultando a matriz original.
 for i in range(Ncol):
 transposta.append([0]*Nlin)
 #Agora, finalmente, eu faço com que o elemento i,j da transposta (que originalmente é sempre zero)
 #seja igual ao elemento j,i da matriz original.
 #para isso eu vario os indices i e j usando um for aninhado a outro, até o numero de linhas e colunas
 #da matriz original, que são iguais respectivamente ao numero de colunas e linhas da matriz transposta.
 for i in range(Nlin):
 for j in range(Ncol):
 transposta[j][i] = matriz[i][j]
 #Aqui a minha matriz transposta é retornada pela função, após preenchida. 
 return transposta

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Outros materiais