Vetores bidimensionais (Matrizes)
Além da manipulação de vetores unidimensionais, a linguagem C também permite a manipulação de um vetor de vetores, isto é, um vetor bidimensional (Matriz). A declaração de um vetor bidimensional é simples, veja abaixo um programa com matrizes:
#include <stdio.h>
int main() {
int mat[2][2];
int a, b;
mat[0][0] = 8;
mat[0][1] = 4;
mat[1][0] = 2;
mat[1][1] = 3;
a = mat[0][0];
b = mat[0][1];
printf( "\n(1,1): %d", a );
printf( "\n(1,2): %d", b );
printf( "\n(2,1): %d", mat[1][0] );
printf( "\n(2,2): %d", mat[1][1] );
return 0;
}
No programa acima foi declarada uma variável do tipo matriz de nome mat. Repare na compatibilidade entre os elementos da matriz e as variáveis comuns. Veja abaixo outro exemplo de matriz:
#include <stdio.h>
void le_matriz( int mat[2][2] ) {
int i, j;
for( i = 0; i < 2; i++ ) {
for( j = 0; j < 2; j++ ) {
printf( "Informe o elemento (%d,%d): ", (i+1), (j+1) );
scanf( "%d", &mat[i][j] );
}
}
}
void imprime_matriz( int mat[2][2] ) {
int i, j;
for( i = 0; i < 2; i++ ) {
for( j = 0; j < 2; j++ )
printf( "%5d", mat[i][j] );
printf( "\n" );
}
}
void soma_matrizes( int matc[2][2], int mata[2][2], int matb[2][2] ) {
int i, j;
for( i = 0; i < 2; i++ )
for( j = 0; j < 2; j++ )
matc[i][j] = mata[i][j] + matb[i][j];
}
int main() {
int mat1[2][2];
int mat2[2][2];
int mat3[2][2];
printf( "Leitura da matriz(1)\n\n" );
le_matriz( mat1 );
printf( "\nLeitura da matriz(2)\n\n" );
le_matriz( mat2 );
soma_matrizes( mat3, mat1, mat2 );
printf( "\nResultado - (Soma)\n\n" );
imprime_matriz( mat3 );
return 0;
}
No exemplo acima, são declaradas três matrizes de dimensões 2x2. Onde, são lidas duas matrizes e, então, o programa calcula a soma das matrizes e a imprime na tela. Repare que o tipo matriz na função soma_matrizes não precisa ser passado como referência para ser alterado. Sem o uso do & as matrizes são passadas como parâmetro por referência. O que permite que a função altere os valores da matriz.
Exercícios
1) Faça um programa que leia 2 matrizes e calcule a subtração de seus elementos. Para isto, basta alterar o programa anterior que soma matrizes
2) Faça um programa que mostra o resultado da soma de duas matrizes de dimensão 3x3 lidas do teclado. Dica: se baseie no programa que soma matrizes mostrado anteriormente.