🧩 Exercícios Práticos: Matrizes Multidimensionais, Row-Major Order e Álgebra

Spec Sistemas Com C • Trilha Progressiva em 4 Níveis


🧭 Navegação Pedagógica


🎯 Nível 1: Fundamentos

Problema 11.1 — Declaração e Preenchimento de Matriz Bidimensional

Contexto: Declaração e Preenchimento de Matriz Bidimensional no contexto de Matrizes Multidimensionais, Row-Major Order e Álgebra.

Requisitos de Execução:

  1. Criar matriz 3x3 e calcular a soma dos elementos da diagonal principal.

Resultado Esperado

Soma da diagonal principal calculada com sucesso.

📤 Instruções de Entrega (Microsoft Teams)

  1. Salve o arquivo como: Atividade_11_1_SeuNome
  2. Envie na tarefa: Atividade Cap 11 - Matrizes Multidimensionais, Row-Major Order e Álgebra
🔑 Gabarito de Código & Solução Comentada
#include <stdio.h>

int main(void) {
    int mat[3][3] = {
        {1, 2, 3},
        {4, 5, 6},
        {7, 8, 9}
    };
    int soma_diag = 0;
    for (int i = 0; i < 3; i++) soma_diag += mat[i][i];
    printf("Soma da diagonal principal: %d\n", soma_diag);
    return 0;
}

🔍 Nível 2: Prática

Problema 11.2 — Transposição de Matrizes (Matriz Transposta A^T)

Contexto: Transposição de Matrizes (Matriz Transposta A^T) no contexto de Matrizes Multidimensionais, Row-Major Order e Álgebra.

Requisitos de Execução:

  1. Construir matriz transposta trocando linhas por colunas transposta[j][i] = original[i][j].

Resultado Esperado

Matriz transposta gerada e impressa.

📤 Instruções de Entrega (Microsoft Teams)

  1. Salve o arquivo como: Atividade_11_2_SeuNome
  2. Envie na tarefa: Atividade Cap 11 - Matrizes Multidimensionais, Row-Major Order e Álgebra
🔑 Gabarito de Código & Solução Comentada
#include <stdio.h>

int main(void) {
    int a[2][3] = {{1, 2, 3}, {4, 5, 6}};
    int at[3][2];
    for (int i = 0; i < 2; i++) {
        for (int j = 0; j < 3; j++) {
            at[j][i] = a[i][j];
        }
    }
    printf("Transposta [0][1]: %d\n", at[0][1]);
    return 0;
}

⚡ Nível 3: Integração

Problema 11.3 — Multiplicação de Matrizes com Complexidade O(N^3)

Contexto: Multiplicação de Matrizes com Complexidade O(N^3) no contexto de Matrizes Multidimensionais, Row-Major Order e Álgebra.

Requisitos de Execução:

  1. Implementar multiplicação de matriz A(MxK) por matriz B(KxN) gerando matriz C(MxN).

Resultado Esperado

Produto matricial calculado com acumulação de produto escalar.

📤 Instruções de Entrega (Microsoft Teams)

  1. Salve o arquivo como: Atividade_11_3_SeuNome
  2. Envie na tarefa: Atividade Cap 11 - Matrizes Multidimensionais, Row-Major Order e Álgebra
🔑 Gabarito de Código & Solução Comentada
#include <stdio.h>

int main(void) {
    int a[2][2] = {{1, 2}, {3, 4}};
    int b[2][2] = {{2, 0}, {1, 2}};
    int c[2][2] = {0};

    for (int i = 0; i < 2; i++) {
        for (int j = 0; j < 2; j++) {
            for (int k = 0; k < 2; k++) {
                c[i][j] += a[i][k] * b[k][j];
            }
        }
    }
    printf("C[0][0] = %d | C[1][1] = %d\n", c[0][0], c[1][1]);
    return 0;
}

🏆 Nível 4: Desafio Corporativo

Problema 11.4 — Otimização de Cache Line com Acesso Sequencial em Row-Major Order

Contexto: Otimização de Cache Line com Acesso Sequencial em Row-Major Order no contexto de Matrizes Multidimensionais, Row-Major Order e Álgebra.

Requisitos de Execução:

  1. Demonstrar que iterar por linhas (i depois j) é significativamente mais rápido que iterar por colunas devido a cache misses.

Resultado Esperado

Iteração otimizada respeitando a localidade espacial do Row-Major Order.

📤 Instruções de Entrega (Microsoft Teams)

  1. Salve o arquivo como: Atividade_11_4_SeuNome
  2. Envie na tarefa: Atividade Cap 11 - Matrizes Multidimensionais, Row-Major Order e Álgebra
🔑 Gabarito de Código & Solução Comentada
#include <stdio.h>

#define L 1000
#define C 1000
static int grande_matriz[L][C];

int main(void) {
    long long soma = 0;
    // Acesso sequencial em memória (Cache-friendly)
    for (int i = 0; i < L; i++) {
        for (int j = 0; j < C; j++) {
            soma += grande_matriz[i][j];
        }
    }
    printf("Soma percorrida com minima perda de cache: %lld\n", soma);
    return 0;
}

⬅️ Voltar ao Índice de Exercícios 📚 Sumário de Tópicos