Exercício 13: Construir um trecho de código que realize a multiplicação de uma matriz A por uma matriz B e armazene o resultado em uma matriz C.
Passo 1
O enunciado pede um trecho de código que faça a multiplicação de uma matriz A por uma matriz B e guarde o resultado em C. O conteúdo aqui é multiplicação de matrizes via três laços aninhados, e vamos precisar conhecer as dimensões de A (N×M), B (M×P) e C (N×P).
Passo 2
Primeiro a gente define as dimensões das matrizes: N linhas em A e C, M colunas em A (e linhas em B), e P colunas em B e C. Isso permite declarar A[N][M], B[M][P] e C[N][P].
Depois precisamos inicializar todos os elementos de C com zero, para não acumular valores lixo da memória.
Depois precisamos inicializar todos os elementos de C com zero, para não acumular valores lixo da memória.
Passo 3
A lógica central é usar três laços: o laço externo percorre as linhas i de A/C, o laço do meio percorre as colunas j de B/C, e o laço interno soma o produto A[i][k]·B[k][j] para k de 0 a M−1.
Ao final dos três laços, teremos preenchido C[i][j] com a soma dos produtos necessários, que é exatamente a definição de multiplicação matricial.
Ao final dos três laços, teremos preenchido C[i][j] com a soma dos produtos necessários, que é exatamente a definição de multiplicação matricial.
Passo 4
Reunindo tudo, basta escrever o trecho de código que declara índices, inicializa C e faz os três laços aninhados para calcular cada entrada de C.
Resposta
// Exemplo em C para multiplicar A (N×M) por B (M×P) e armazenar em C (N×P)
void multiplyMatrices(int N, int M, int P, double A[][M], double B[][P], double C[][P]) {
int i, j, k;
for (i = 0; i < N; i++) {
for (j = 0; j < P; j++) {
C[i][j] = 0.0; // inicializa C[i][j]
for (k = 0; k < M; k++) {
C[i][j] += A[i][k] * B[k][j];
}
}
}
}
void multiplyMatrices(int N, int M, int P, double A[][M], double B[][P], double C[][P]) {
int i, j, k;
for (i = 0; i < N; i++) {
for (j = 0; j < P; j++) {
C[i][j] = 0.0; // inicializa C[i][j]
for (k = 0; k < M; k++) {
C[i][j] += A[i][k] * B[k][j];
}
}
}
}