1 Aula 11 Matrizes Prof. Filipe Mutz
Matrizes São estruturas de dados usadas para armazenar informações multidimensionais (que possuem mais de uma dimensão). 2 int v[3] int m[3][3] float t[3][4][2]
Exemplo: Notas dos Alunos por Disciplina 3 Cálculo 1PBC Intro. Eng.... Armando786 Bernardo465 Carlos579 Deise246 Euclides
Exemplo: Aluguel por Região 4 CasaApto. Sala Comercial Vitória Cariacica Viana Vila Velha Serra
Exemplo: Evolução de Preços 5 Caderno Lápis Borracha Cariacica Vitória Vila Velha Viana Janeiro Fevereiro
Declaração e Acesso a Elementos de uma Matriz int m[6][4]; tipo nome [nlinhas][ncols];
Declaração e Acesso a Elementos de uma Matriz int m[6][4]; m[2][3] = 7;
Declaração e Acesso a Elementos de uma Matriz int m[6][4]; m[0][3] = -79;
Declaração e Acesso a Elementos de uma Matriz int m[6][4]; int *l = m[3];
Declaração e Acesso a Elementos de uma Matriz int m[6][4]; int *l = m[3]; l[2] = 80;
Declaração e Acesso a Elementos de uma Matriz int m[6][4]; int *l = m[3]; l[2] = 80; Em C não existe uma funcionalidade pré-definida para retornar uma coluna.
#include int main (void) { int m[2][2]; m[0][0] = 0; m[0][1] = 1; m[1][0] = 2; m[1][1] = 3; printf("%d %d\n", m[0][0], m[0][1]); printf("%d %d\n", m[1][0], m[1][1]); return 0; } Pressione qualquer tecla...
Lendo e Escrevendo Elementos de uma Matriz 13 #include int main (void) { int m[2][2]; scanf("%d", &m[0][0]); scanf("%d", &m[0][1]); scanf("%d", &m[1][0]); scanf("%d", &m[1][1]); printf("m[0][0]: %d\n", m[0][0]); printf("m[0][1]: %d\n", m[0][1]); printf("m[1][0]: %d\n", m[1][0]); printf("m[1][1]: %d\n", m[1][1]); return 0; }
#include int main (void) { int m[2][2]; int n[2][2]; int o[2][2]; m[0][0] = 0; n[0][0] = 5; m[0][1] = 1; n[0][1] = 6; m[1][0] = 2; n[1][0] = 7; m[1][1] = 3; n[1][1] = 8;... return 0; } Soma de Matrizes
#include int main (void) { int m[2][2]; int n[2][2]; int o[2][2]; m[0][0] = 0; n[0][0] = 5; m[0][1] = 1; n[0][1] = 6; m[1][0] = 2; n[1][0] = 7; m[1][1] = 3; n[1][1] = 8;... return 0; } Soma de Matrizes M = N = O =
#include int main (void) { int m[2][2]; int n[2][2]; int o[2][2]; m[0][0] = 0; n[0][0] = 5; m[0][1] = 1; n[0][1] = 6; m[1][0] = 2; n[1][0] = 7; m[1][1] = 3; n[1][1] = 8;... return 0; } Soma de Matrizes M = N = O =
#include int main (void) { int m[2][2]; int n[2][2]; int o[2][2]; m[0][0] = 0; n[0][0] = 5; m[0][1] = 1; n[0][1] = 6; m[1][0] = 2; n[1][0] = 7; m[1][1] = 3; n[1][1] = 8;... return 0; } Soma de Matrizes M = N = O =
#include int main (void) { int m[2][2]; int n[2][2]; int o[2][2]; m[0][0] = 0; n[0][0] = 5; m[0][1] = 1; n[0][1] = 6; m[1][0] = 2; n[1][0] = 7; m[1][1] = 3; n[1][1] = 8;... return 0; } Soma de Matrizes M = N = O =
#include int main (void) { int m[2][2]; int n[2][2]; int o[2][2]; m[0][0] = 0; n[0][0] = 5; m[0][1] = 1; n[0][1] = 6; m[1][0] = 2; n[1][0] = 7; m[1][1] = 3; n[1][1] = 8;... return 0; } Soma de Matrizes M = N = O =
#include int main (void) { int m[2][2]; int n[2][2]; int o[2][2]; m[0][0] = 0; n[0][0] = 5; m[0][1] = 1; n[0][1] = 6; m[1][0] = 2; n[1][0] = 7; m[1][1] = 3; n[1][1] = 8;... return 0; } Soma de Matrizes M = N = O =
#include int main (void) { int m[2][2]; int n[2][2]; int o[2][2]; m[0][0] = 0; n[0][0] = 5; m[0][1] = 1; n[0][1] = 6; m[1][0] = 2; n[1][0] = 7; m[1][1] = 3; n[1][1] = 8;... return 0; } Soma de Matrizes M = N = O =
#include int main (void) { int m[2][2]; int n[2][2]; int o[2][2]; m[0][0] = 0; n[0][0] = 5; m[0][1] = 1; n[0][1] = 6; m[1][0] = 2; n[1][0] = 7; m[1][1] = 3; n[1][1] = 8;... return 0; } Soma de Matrizes M = N = O =
#include int main (void) { int m[2][2]; int n[2][2]; int o[2][2]; m[0][0] = 0; n[0][0] = 5; m[0][1] = 1; n[0][1] = 6; m[1][0] = 2; n[1][0] = 7; m[1][1] = 3; n[1][1] = 8;... return 0; } Soma de Matrizes M = N = O =
#include int main (void) { int m[2][2]; int n[2][2]; int o[2][2]; m[0][0] = 0; n[0][0] = 5; m[0][1] = 1; n[0][1] = 6; m[1][0] = 2; n[1][0] = 7; m[1][1] = 3; n[1][1] = 8;... return 0; } Soma de Matrizes M = N = O =
#include int main (void) { int m[2][2]; int n[2][2]; int o[2][2]; m[0][0] = 0; n[0][0] = 5; m[0][1] = 1; n[0][1] = 6; m[1][0] = 2; n[1][0] = 7; m[1][1] = 3; n[1][1] = 8;... return 0; } Soma de Matrizes M = N = O =
#include int main (void) { int m[2][2]; int n[2][2]; int o[2][2]; m[0][0] = 0; n[0][0] = 5; m[0][1] = 1; n[0][1] = 6; m[1][0] = 2; n[1][0] = 7; m[1][1] = 3; n[1][1] = 8;... return 0; } Soma de Matrizes M = N = O =
Soma de Matrizes M = N = O = A operação de soma foi repetida para todos os elementos da matriz. Parece que estamos fazendo uma repetição, certo? Qual a diferença entre as repetições de vetores e matrizes?
Soma de Matrizes M = N = O = A operação de soma foi repetida para todos os elementos da matriz. Parece que estamos fazendo uma repetição, certo? Qual a diferença entre as repetições de vetores e matrizes? Estamos repetindo a soma para cada coluna!
Soma de Matrizes M = N = O =... int j; for (j = 0; j < 2; j++) o[0][j] = m[0][j] + n[0][j]; for (j = 0; j < 2; j++) o[1][j] = m[1][j] + n[1][j];....
Soma de Matrizes M = N = O =... int j; for (j = 0; j < 2; j++) o[0][j] = m[0][j] + n[0][j]; for (j = 0; j < 2; j++) o[1][j] = m[1][j] + n[1][j];.... Mas estamos realizando a mesma operação para todas as linhas!
Soma de Matrizes M = N = O =... int i, j; for (i = 0; i < 2; i++) // linha for (j = 0; j < 2; j++) // coluna o[i][j] = m[i][j] + n[i][j];....
Soma de Matrizes M = N = O =... int i, j; for (i = 0; i < 2; i++) // linha for (j = 0; j < 2; j++) // coluna o[i][j] = m[i][j] + n[i][j];.... Como mostrar os elementos da matriz resultado na tela?
Soma de Matrizes M = N = O =... int i, j; for (i = 0; i < 2; i++) // linha for (j = 0; j < 2; j++) // coluna o[i][j] = m[i][j] + n[i][j]; for (i = 0; i < 2; i++) // linha { for (j = 0; j < 2; j++) // coluna printf(“%d ”, o[i][j]); printf(“\n”); }....
Multiplicação de Matrizes M = N = O =
Multiplicação de Matrizes M = N = O =
Multiplicação de Matrizes M = N = O = Linha 0 de M Coluna 0 de N O[0][0] = M[0][0] * N[0][0] +...
Multiplicação de Matrizes M = N = O = Linha 0 de M Coluna 0 de N O[0][0] = M[0][0] * N[0][0] + M[0][1] * N[1][0]
Multiplicação de Matrizes M = N = O = Linha 0 de M Coluna 0 de N O[0][0] = M[0][0] * N[0][0] + M[0][1] * N[1][0]
Multiplicação de Matrizes M = N = O = Linha 0 de M Coluna 0 de N O[0][0] = 0; O[0][0] += M[0][0] * N[0][0]; O[0][0] += M[0][1] * N[1][0];
Multiplicação de Matrizes M = N = O = Linha 0 de M Coluna 0 de N O[0][0] = 0; O[0][0] += M[0][0] * N[0][0]; O[0][0] += M[0][1] * N[1][0];
Multiplicação de Matrizes M = N = O = Linha 0 de M Coluna 1 de N O[0][1] =...
Multiplicação de Matrizes M = N = O = Linha 0 de M Coluna 1 de N O[0][1] = M[0][0] * N[0][1] +...
Multiplicação de Matrizes M = N = O = Linha 0 de M Coluna 1 de N O[0][1] = M[0][0] * N[0][1] + M[0][1] * N[1][1]
Multiplicação de Matrizes M = N = O = Linha 0 de M Coluna 1 de N O[0][1] = M[0][0] * N[0][1] + M[0][1] * N[1][1]
Multiplicação de Matrizes M = N = O = Linha 0 de M Coluna 1 de N O[0][1] = M[0][0] * N[0][1] + M[0][1] * N[1][1] Já perceberam alguns padrões?
Multiplicação de Matrizes M = N = O = Linha 0 de M Coluna 1 de N O[0][1] = M[0][0] * N[0][1] + M[0][1] * N[1][1]
Multiplicação de Matrizes M = N = O = Linha 0 de M Coluna 1 de N O[0][1] = M[0][0] * N[0][1] + M[0][1] * N[1][1] Para cada par linha x coluna da matriz O, precisamos percorrer simultaneamente uma linha de M e uma coluna de N multiplicando seus elementos e acumulando a soma.
Multiplicação de Matrizes M = N = O = Linha 0 de M Coluna 1 de N O[0][1] = M[0][0] * N[0][1] + M[0][1] * N[1][1] Pergunta de Ouro: Quantos loops são necessários?
Multiplicação de Matrizes M = N = O = Linhas de M
Multiplicação de Matrizes M = N = O = Linhas de M
Multiplicação de Matrizes M = N = O = Linhas de M 2.P/ cada linha de M, as colunas de N.
Multiplicação de Matrizes M = N = O = Linhas de M 2.P/ cada linha de M, as colunas de N.
Multiplicação de Matrizes M = N = O = Linhas de M 2.P/ cada linha de M, as colunas de N. 3.P/ cada linha de M, e cada coluna de N, realizar a multiplicação ponto-a-ponto.
#include int main (void) { int m[2][2]; int n[2][2]; int o[2][2]; m[0][0] = 0; n[0][0] = 5; m[0][1] = 1; n[0][1] = 6; m[1][0] = 2; n[1][0] = 7; m[1][1] = 3; n[1][1] = 8; … return 0; }
#include int main (void) { int m[2][2]; int n[2][2]; int o[2][2]; m[0][0] = 0; n[0][0] = 5; m[0][1] = 1; n[0][1] = 6; m[1][0] = 2; n[1][0] = 7; m[1][1] = 3; n[1][1] = 8; … return 0; } int lM, cN, cM_lN; for (lM = 0; lM < 2; lM++) { }
#include int main (void) { int m[2][2]; int n[2][2]; int o[2][2]; m[0][0] = 0; n[0][0] = 5; m[0][1] = 1; n[0][1] = 6; m[1][0] = 2; n[1][0] = 7; m[1][1] = 3; n[1][1] = 8; … return 0; } int lM, cN, cM_lN; for (lM = 0; lM < 2; lM++) { for (cN = 0; cN < 2; cN++) { }
#include int main (void) { int m[2][2]; int n[2][2]; int o[2][2]; m[0][0] = 0; n[0][0] = 5; m[0][1] = 1; n[0][1] = 6; m[1][0] = 2; n[1][0] = 7; m[1][1] = 3; n[1][1] = 8; … return 0; } int lM, cN, cM_lN; for (lM = 0; lM < 2; lM++) { for (cN = 0; cN < 2; cN++) { o[lM][cN] = 0; for (k = 0; k < 2; k++) o[lM][cN] += (m[lM][k] * n[k][cN]); }
int lM, cN, cM_lN; for (lM = 0; lM < 2; lM++) { for (cN = 0; cN < 2; cN++) { o[lM][cN] = 0; for (k = 0; k < 2; k++) o[lM][cN] += (m[lM][k] * n[k][cN]); } M = N = O = O[0][1] = M[0][0] * N[0][1] + M[0][1] * N[1][1]
Matrizes na Memória PosiçãoNomeValor int m[2][2];
Matrizes na Memória int m[2][2]; PosiçãoNomeValor m[0] [0] 108[1] m[1] [0] 120[1] m [0] [1] Linha 0 Linha 1
Matrizes na Memória int m[2][2]; PosiçãoNomeValor m[0] [0] 108[1] m[1] [0] 120[1] m [0] [1] Linha 0 Linha 1 Cada linha da matriz se comporta como um vetor!
Matrizes na Memória int m[2][2]; int *l = m[0]; PosiçãoNomeValor m[0] [0] 108[1] m[1] [0] 120[1] m [0] [1] Qual será o valor de l ?
Matrizes na Memória int m[2][2]; m[0][0] = 5; int *l = m[0]; l[0] = 3; PosiçãoNomeValor m[0] [0] 108[1] m[1] [0] 120[1] m [0] [1]
Matrizes na Memória int m[2][2]; m[0][0] = 5; int *l = m[0]; l[0] = 3; PosiçãoNomeValor m[0] [0] 108[1] m[1] [0] 120[1] m [0] [1]
Matrizes na Memória int m[2][2]; m[0][0] = 5; int *l = m[0]; l[0] = 3; PosiçãoNomeValor m[0] [0]5 108[1] m[1] [0] 120[1] m [0] [1]
Matrizes na Memória int m[2][2]; m[0][0] = 5; int *l = m[0]; l[0] = 3; PosiçãoNomeValor m[0] [0]5 108[1] m[1] [0] 120[1] m [0] [1] l104
Matrizes na Memória int m[2][2]; m[0][0] = 5; int *l = m[0]; l[0] = 3; PosiçãoNomeValor m[0] [0]5 108[1] m[1] [0] 120[1] m [0] [1] l104
Matrizes na Memória int m[2][2]; m[0][0] = 5; int *l = m[0]; l[0] = 3; PosiçãoNomeValor m[0] [0]3 108[1] m[1] [0] 120[1] m [0] [1] l104
Matrizes na Memória int m[2][2]; m[0][0] = 5; int *l = m[1]; l[0] = 3; PosiçãoNomeValor m[0] [0]3 108[1] m[1] [0] 120[1] m [0] [1] l116
Matrizes na Memória int m[2][2]; m[0][0] = 5; int *l = m[1]; l[0] = 3; PosiçãoNomeValor m[0] [0]3 108[1] m[1] [0] 120[1] m [0] [1] l116
Matrizes na Memória int m[2][2]; m[0][0] = 5; int *l = m[1]; l[0] = 3; PosiçãoNomeValor m[0] [0]3 108[1] m[1] [0]3 120[1] m [0] [1] l116
Matrizes na Memória int m[3][3]; PosiçãoNomeValor m[0] [0] 108[1] m[1] [0] 120[1] m[2] [0] 132[1] m [0] [1] [2]
Matrizes na Memória int m[3][3]; PosiçãoNomeValor m[0] [0] 108[1] m[1] [0] 120[1] m[2] [0] 132[1] m [0] [1] [2]
Matrizes na Memória int m[2][2]; PosiçãoNomeValor m[0][0] 108m[0][1] m[1][0] 120m[1][1] m[0] m[1] m128 Assim como os vetores, a matriz também é um ponteiro, mas dessa vez para uma região de memória onde estão os outros ponteiros.
Matrizes na Memória int m[2][2]; PosiçãoNomeValor m[0][0] 108m[0][1] m[1][0] 120m[1][1] m[0] m[1] m128 Ao acessar um elemento na matriz estamos na verdade realizando dois movimentos na memória! m[0][1] = 7;
Matrizes na Memória int m[2][2]; PosiçãoNomeValor m[0][0] 108m[0][1] m[1][0] 120m[1][1] m[0] m[1] m128 Ao acessar um elemento na matriz estamos na verdade realizando dois movimentos na memória! m[0][1] = 7;
Matrizes na Memória int m[2][2]; PosiçãoNomeValor m[0][0] 108m[0][1] m[1][0] 120m[1][1] m[0] m[1] m128 Ao acessar um elemento na matriz estamos na verdade realizando dois movimentos na memória! m[0][1] = 7;
Matrizes na Memória PosiçãoNomeValor m[0][0] 108m[0][1] m[1][0] 120m[1][1] m[0] m[1] m128 Ao acessar um elemento na matriz estamos na verdade realizando dois movimentos na memória! Por essa razão também precisamos ter atenção ao usar matrizes como parâmetros de funções.