Italo Info


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.