matriz 2D
Uma matriz bidimensional é uma matriz que possui dois índices para cada elemento (muitas vezes, essas matrizes são chamadas com uma palavra - matriz).
É conveniente armazenar e processar vários dados tabulares em uma matriz. Assim como qualquer tabela é formada por linhas e colunas, as matrizes são formadas por linhas e colunas.
Para maior clareza, você pode representar uma matriz como esta:
Embora, de fato, na memória do computador, a matriz fique assim:
Para usar uma matriz em um programa, ela deve ser declarada como um array regular, especificando o tipo de dados e dois tamanhos (números ou constantes). Também é possível (e desejável) definir imediatamente os valores iniciais. Por exemplo, redefina todos os elementos.
Exemplo 1: Declarando uma matriz de 3 linhas e 3 colunas com valores iniciais arbitrários
intA[3][3] = {{0,1,2},
{3,4,5},
{6,7,8} };
Exemplo 2: Declarando uma matriz de 5 linhas e 10 colunas (o tamanho é definido por meio de uma constante) com valores iniciais zero
const int N = 5, M = 10;
duplo B[N][M] = {};
Para nos referirmos a um elemento específico da matriz, usamos dois pares de colchetes, no primeiro colchete indicamos o número da linha, no segundo - o número da coluna.
Exemplo:
A[0][2] = 100; //numeração de linhas e colunas começa do zero
Preenchendo a matriz e exibindo-a
Para percorrer toda a matriz, é necessário um loop aninhado. Vejamos como preencher e gerar uma matriz usando o exemplo de um programa que solicita os valores dos elementos do teclado e simplesmente exibe a matriz preenchida na tela.
#include <iostream>
usando namespace std;
int principal() {
/* Declarando um array bidimensional */
const int N = 2, M = 3;
int A[N][M];
/* preenche os elementos da matriz do teclado linha por linha */
int i, j;
para (i = 0; i < N; i++)
para (j = 0; j < M; j++)
cin>> A[i][j];
//Mostra todos os elementos da matriz na tela linha por linha
for (i = 0; i < N; i++) { //o loop externo é responsável por iterar sobre as linhas
for (j = 0; j < M; j++) //loop para exibir os elementos da string
cout << A[i][j] << " ";
cout << endl; //após exibir os elementos da j-ésima linha, passamos para uma nova linha
}
retorna 0;
}
No exemplo acima, tanto o preenchimento quanto a exibição da matriz ocorrem linha por linha (primeiro passamos por todos os valores j - o índice das colunas, e só então o índice da linha muda - i)
Ao trocar loops (internos com externos), você pode preencher e/ou gerar uma matriz por colunas