Aula - Introdução a matriz

Aula por Arthur Lobo

Na última aula você aprendeu sobre vetores, agora você aprenderá sobre um tipo especial de vetor, uma matriz.

Assim como um vetor de inteiros, podemos declarar um vetor de vetores! Para um vetor de 10 inteiros, você declara 'int A[5]', e na posição 'A[0]' você acessa o primeiro inteiro, na 'A[1]' o segundo e assim por diante (lembrando que o vetor é 0 indexado).

A mesma coisa acontece quando você declara um vetor de vetores. Se você quiser declarar 5 vetores, cada um com 4 inteiros, você usa 'int B[5][4]'. Para acessar o vetor na posição 2, faríamos 'B[2]', e para acessar a terceira posição dele, 'B[2][3]' (lembrando que a posição 3 é o quarto inteiro do vetor). Desse jeito, se você quiser acessar o vetor i na posição j, basta usar o comando 'B[i][j]'. Chamamos essa estrutura de matriz porque um "vetor de N vetores de tamanho M" pode ser representado como uma matriz de tamanho N\times M (de altura N e largura M).

Então basicamente, quando você quer declarar uma matriz com N linhas e M colunas, primeiro você escreve seu tipo (int,char,float...), o nome dela (no exemplo a cima eu usei B, mas pode ser outro, claro) e então seu tamanho: 'tipo nome[N][M]'.

Aqui está uma representação dessa matriz 'int B[5][4]':

Agora vamos ver um problema que usa matriz:

"Faça um programa para ler os elementos de uma matriz 3x3 e imprimir a soma de cada coluna da matriz."

Os elementos são dados um em cada linha, sendo os 3 primeiros os números da primeira linha, os 3 próximos da segunda, e os 3 últimos da terceira.

Para ler o problema com mais detalhes, os exemplos de entrada/saída ou submetê-lo, clique aqui.

Representação da matriz do segundo exemplo de entrada no problema:

                             

Solução:

Primeiro declaramos a matriz 'int A[3][3]' faremos dois for, um dentro do outro, para ler a matriz. Depois passamos por cada coluna somando seus valores um por um ( 'soma+=A[i][j]'), para enfim imprimirmos a soma.

Código:

 

Problema:

OBS: (i,j) se refere a posição na linha i e coluna j, ou seja, '[i][j]'.

Agora que você entendeu o básico de matriz, tente fazer o problema Soma das Diagonais da Matriz 3x3, lembrando que, em uma matriz N\times N, a diagonal principal é aquela que começa na posição (0,0) (na linha 0 e coluna 0) e termina em (N-1,N-1) (linha N-1 e coluna N-1); enquanto a diagonal secundário vai da posição (0,N-1) até (N-1,0).

Solução:

Sendo a matriz do problema 'int A[3][3]', é fácil ver os elementos da diagonal principal são A[0][0], A[1][1] e A[2][2], enquanto os da diagonal secundária são A[0][2], A[1][1] e A[2][0]. Agora basta imprimir a soma desses valores. Para ver o código, clique aqui.

Agora vamos tentar generalizar: quais são as posições que fazem parte das diagonal principal e da secundária em uma matriz N \times N?

Dica

Preste atenção em casos pequenos (como em uma matriz 4x4 e 5x5), quais posições fazem parte de cada uma das diagonais? Você consegue ver algum padrão nelas?

[collapse]
Diagonal Principal - Solução

Todas as posições (a,b) com a = b, fazem parte da diagonal principal. Ou seja, Em uma matriz N \times N, são as posições (0,0), (1,1), (2,2), ..., (N-1,N-1).

[collapse]
Diagonal Secundária - Solução

Todas as posições (a,b), com a+b = N-1 fazem parte da diagonal secundária. Ou seja, em uma matriz N\times N, são as posições (0,N-1), (1,N-2), ..., (i,N-1-i), ... (N-1,0).

[collapse]