Arrays Multidimensionais e Matrizes em C++

Curso de C++ para Engenharia

Tópicos

  • Declaração e inicialização de arrays 2D e 3D
  • Passando arrays 2D e 3D como argumentos para funções
  • Acesso e manipulação de elementos
  • Aplicações práticas de matrizes

Declaração e Inicialização

Arrays 2D


int matriz[3][4] = {
    {1, 2, 3, 4},
    {5, 6, 7, 8},
    {9, 10, 11, 12}
};
                

Declaração e Inicialização

Arrays 3D


int cubo[2][3][4] = {
    {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}},
    {{13, 14, 15, 16}, {17, 18, 19, 20}, {21, 22, 23, 24}}
};
                

Passando Arrays como Argumentos

Array 2D


void funcao(int matriz[][4], int linhas, int colunas) {
    // Código aqui
}

int main() {
    int m[3][4] = {{1,2,3,4}, {5,6,7,8}, {9,10,11,12}};
    funcao(m, 3, 4);
    return 0;
}
                

Passando Arrays como Argumentos

Array 3D


void funcao(int cubo[][3][4], int profundidade, int linhas, int colunas) {
    // Código aqui
}

int main() {
    int c[2][3][4] = {
        {{1,2,3,4}, {5,6,7,8}, {9,10,11,12}},
        {{13,14,15,16}, {17,18,19,20}, {21,22,23,24}}
    };
    funcao(c, 2, 3, 4);
    return 0;
}
                

Acesso e Manipulação


int matriz[3][4] = {{1,2,3,4}, {5,6,7,8}, {9,10,11,12}};

// Acessar elemento
int elemento = matriz[1][2]; // elemento = 7

// Modificar elemento
matriz[0][3] = 100;

// Iteração
for (int i = 0; i < 3; i++) {
    for (int j = 0; j < 4; j++) {
        cout << matriz[i][j] << " ";
    }
    cout << endl;
}
                

Travessia de Matriz em C++


        

Aplicações Práticas

  • Processamento de imagens
  • Simulações físicas
  • Algoritmos de grafos
  • Resolução de sistemas lineares

Multiplicação de Matrizes

Conceito

  • Operação fundamental em álgebra linear
  • Multiplica-se uma matriz m x n por uma matriz n x p
  • Resultado é uma matriz m x p
  • Cada elemento é a soma dos produtos dos elementos correspondentes

Multiplicação de Matrizes 3x2 por 2x3

×
=

Multiplicação de Matrizes

Implementação em C++


void multiplicaMatrizes(int A[][3], int B[][2], int C[][2], 
                        int m, int n, int p) {
    for (int i = 0; i < m; i++) {
        for (int j = 0; j < p; j++) {
            C[i][j] = 0;
            for (int k = 0; k < n; k++) {
                C[i][j] += A[i][k] * B[k][j];
            }
        }
    }
}
                

Multiplicação de Matrizes

Explicação do Código

  • m: número de linhas de A
  • n: número de colunas de A / linhas de B
  • p: número de colunas de B
  • Três loops aninhados para percorrer as matrizes
  • Loop interno calcula o produto escalar de uma linha de A com uma coluna de B

Multiplicação de Matrizes

Exemplo de Uso


int main() {
    int A[2][3] = {{1, 2, 3}, {4, 5, 6}};
    int B[3][2] = {{7, 8}, {9, 10}, {11, 12}};
    int C[2][2];

    multiplicaMatrizes(A, B, C, 2, 3, 2);

    // Imprimir resultado
    for (int i = 0; i < 2; i++) {
        for (int j = 0; j < 2; j++) {
            cout << C[i][j] << " ";
        }
        cout << endl;
    }

    return 0;
}
                

Conclusão

  • Arrays multidimensionais são essenciais em C++
  • Úteis para representar dados em várias dimensões
  • Amplamente utilizados em engenharia e ciência da computação
  • Prática e exercícios são fundamentais para dominar o conceito