Introdução à Computação para Engenharia MAC2166

Slides:



Advertisements
Apresentações semelhantes
Estruturas de Dados Homogêneas Multidimensionais – Matrizes
Advertisements

Matrizes e Funções - Continuação
Vetor de Ponteiros Exemplo de Alocação. Escrever Vetor de Vetores de floats int main() { int i, k, n; float **vetor; // vetor de vetores int *tamanho;
CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2014 Capítulo VII Variáveis Indexadas Numéricas.
Algoritmos e Programação MC102 Prof. Paulo Miranda IC-UNICAMP Aula 15 Ponteiros.
Algoritmos e Programação MC102
Algoritmos e Programação MC102 Prof. Paulo Miranda IC-UNICAMP Aula 15 Funções.
Profa. Mercedes Gonzales Márquez
Programação de Computadores I – Arquivos Profa. Mercedes Gonzales Márquez.
Fundamentos de Programação 1 Aula N. 02 Prof. SIMÃO Jean Marcelo SIMÃO Linguagem C “Laços de Repetição em C”
Prof. Tertuliano Estrutura Condicional em C++. Sumário „ Estrutura Condicional Simples „ Estrutura Condicional Composta „ Estrutura Condicional Simples.
Professora de Matemática Elisabete Lima Professora de Matemática Elisabete Lima.
Computação – Informática Aula N. 05 Prof. SIMÃO Jean Marcelo SIMÃO Linguagem C “Matrizes em C” 1.
Princípios de Desenvolvimento de Algoritmos MAC122 Prof. Dr. Paulo Miranda IME-USP Funções Recursivas.
Princípios de Desenvolvimento de Algoritmos MAC122 Prof. Dr. Paulo Miranda IME-USP Alocação Dinâmica de Memória.
Linguagem de Programação – Aula 03 Prof. Me. Ronnison Reges Vidal.
Respostas dos Exercícios. Lista 1 1.a) Escreva uma função que receba como parâmetro uma temperatura dada em graus Fahrenheit e retorna a temperatura.
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).
Introdução à Computação para Engenharia MAC2166
Introdução à Computação para Engenharia MAC2166
//. retangulo. c - exibe um retangulo vermelho no vídeo
Grupos de Slides No 7. Prof. SIMÃO
Algoritmo e Estrutura de Dados I
Lógica de Programação I
Fundamentos de Programação 1
INF1007: Programação 2 2 – Alocação Dinâmica
Algoritmos e Estruturas de Dados I
Fundamentos de Programação 1
Profa. Mercedes Gonzales Márquez
Fundamentos de Programação 1
Profa. Mercedes Gonzales Márquez
Algoritmos e Estruturas de Dados I
Introdução à Computação para Engenharia MAC2166
PCI- Estruturas de Controle
PCI- Estruturas de Controle
Estruturas de Repetição
Algoritmos e Estruturas de Dados I
Algoritmos e Estruturas de Dados I
Fundamentos de Programação 1
FUNDAMENTO DE PROGRAMAÇÃO PROF. BRUNO DE CASTRO H. SILVA
FUNDAMENTO DE PROGRAMAÇÃO PROF. BRUNO DE CASTRO H. SILVA
Introdução à Programação BCC 201 Aula
Algoritmos e Estruturas de Dados I
FUNDAMENTO DE PROGRAMAÇÃO
Introdução à Programação BCC 201 Aula
Programação de Computadores I – Arquivos
Algoritmos e Estruturas de Dados I
Introdução à Computação para Engenharia MAC2166
FUNDAMENTO DE PROGRAMAÇÃO
UNIDADE 7 Tipos estruturados
Algoritmos e Programação MC102
Programação de Computadores I – Ponteiros
Introdução à Computação para Engenharia MAC2166
Disciplina: Álgebra Linear e Geometria Analítica
Algoritmos Prof.: Carlos Alberto _1:
Fundamentos de Programação 1
Programação de Computadores I – Arquivos
Fundamentos de Programação 1
Programação de Computadores I – Ponteiros
Fundamentos de Programação 1
Computação Eletrônica Vetores e Matrizes
TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS
Matriz Matriz é uma tabela de elementos dispostos segundo linhas e colunas. Exemplo:
Construção de Algoritmos AULA 03
Linguagem C Linguagem Imperativa
MATRIZES.
Programação de Computadores LINGUAGEM C – AULA 03 – PROF. WELLINGTON TELLES.
Programação de Computadores LINGUAGEM C – AULA 05 - PROF. WELLINGTON TELLES.
+ = Operações com Matrizes ADIÇÃO
Álgebra Linear Matrizes
Transcrição da apresentação:

Introdução à Computação para Engenharia MAC2166 Prof. Dr. Paulo Miranda IME-USP Matrizes

Matrizes Motivação: Imagine que cada aluno possui notas em N testes. Como armazenar esses dados? Como calcular a média do aluno X e a média da turma no teste Y? Definição: C permite vetores de qualquer tipo. Matriz é um caso particular de vetor, onde os elementos são vetores (vetor de vetores). Aplicações: Álgebra linear, processamento de imagens, ...

Matrizes: Na matemática: int main(){ int A[3][4]; A[0][0] = 0; return 0; } 1 2 3 Representação gráfica em C: 4 5 6 7 8 9 10 11

Matrizes: Na matemática: int main(){ int A[3][4]={{ 0, 1, 2, 3}, { 4, 5, 6, 7}, { 8, 9,10,11}}; return 0; } 1 2 3 Representação gráfica em C: 4 5 6 7 8 9 10 11

Operações envolvendo Matrizes Adição entre Matrizes:

Exemplo: Faça um programa que soma duas matrizes. #include <stdio.h> #define LIM 100 int main(){ float A[LIM][LIM]; float B[LIM][LIM]; float C[LIM][LIM]; int am,an,bm,bn,cm,cn,i,j; /* Lendo matriz A. */ scanf("%d %d",&am,&an); for(i=0; i<am; i++) for(j=0; j<an; j++) scanf("%f",&A[i][j]); /* Lendo matriz B. */ scanf("%d %d",&bm,&bn); for(i=0; i<bm; i++) for(j=0; j<bn; j++) scanf("%f",&B[i][j]); /* Soma: C = A+B */ if(am!=bm || an!=bn) return 0; cm = am; cn = an; for(i=0; i<cm; i++) for(j=0; j<cn; j++) C[i][j]=A[i][j]+B[i][j]; /* Imprimir resultado. */ printf("%d %d\n",cm,cn); for(i=0; i<cm; i++){ printf(" %.2f",C[i][j]); printf("\n"); }

Operações envolvendo Matrizes Multiplicação de Matrizes:

Exemplo: Faça um programa que multiplica duas matrizes. #include <stdio.h> #define LIM 100 int main(){ float A[LIM][LIM]; float B[LIM][LIM]; float C[LIM][LIM]; int am,an,bm,bn,cm,cn; int i,j,k; /* Lendo matriz A. */ scanf("%d %d",&am,&an); for(i=0; i<am; i++) for(j=0; j<an; j++) scanf("%f",&A[i][j]); /* Lendo matriz B. */ scanf("%d %d",&bm,&bn); for(i=0; i<bm; i++) for(j=0; j<bn; j++) scanf("%f",&B[i][j]); /* Mult: C = A.B */ if(an!=bm) return 0; cm = am; cn = bn; for(i=0; i<cm; i++){ for(j=0; j<cn; j++){ C[i][j] = 0.0; for(k=0; k<an; k++) C[i][j]+=A[i][k]*B[k][j]; } /* Imprimir resultado. */ printf("%d %d\n",cm,cn); for(j=0; j<cn; j++) printf(" %.2f",C[i][j]); printf("\n"); return 0;

Operações envolvendo Matrizes Transposta:

Exemplo: Faça um programa que encontra a transposta da matriz. #include <stdio.h> #define LIM 100 int main(){ float A[LIM][LIM]; float C[LIM][LIM]; int am,an,cm,cn,i,j; /* Lendo matriz A. */ scanf("%d %d",&am,&an); for(i=0; i<am; i++) for(j=0; j<an; j++) scanf("%f",&A[i][j]); /* C = A^T */ cm = an; cn = am; for(i=0; i<cm; i++) for(j=0; j<cn; j++) C[i][j] = A[j][i]; /* Imprimir resultado. */ printf("%d %d\n",cm,cn); for(i=0; i<cm; i++){ for(j=0; j<cn; j++) printf(" %.2f",C[i][j]); printf("\n"); } return 0;

Matrizes aleatórias Faça um programa que gera uma matriz aleatória. #include <stdio.h> #include <stdlib.h> #include <time.h> #define LIM 100 int main(){ float A[LIM][LIM]; int m,n,i,j; float Vmax; scanf("%d %d %f",&m,&n,&Vmax); srand(time(NULL)); for(i=0; i<m; i++) for(j=0; j<n; j++) A[i][j] = Vmax*(rand()/(float)RAND_MAX); /* Imprimir resultado. */ ...

Matrizes aleatórias Faça um programa que gera uma matriz aleatória. #include <stdio.h> #include <stdlib.h> #include <time.h> #define LIM 100 int main(){ float A[LIM][LIM]; int m,n,i,j; float Vmax; scanf("%d %d %f",&m,&n,&Vmax); srand(time(NULL)); for(i=0; i<m; i++) for(j=0; j<n; j++) A[i][j] = Vmax*(rand()/(float)RAND_MAX); /* Imprimir resultado. */ ... #include <time.h> /*Retorna tempo em segundos. */ time(NULL);

Matrizes aleatórias Faça um programa que gera uma matriz aleatória. #include <stdio.h> #include <stdlib.h> #include <time.h> #define LIM 100 int main(){ float A[LIM][LIM]; int m,n,i,j; float Vmax; scanf("%d %d %f",&m,&n,&Vmax); srand(time(NULL)); for(i=0; i<m; i++) for(j=0; j<n; j++) A[i][j] = Vmax*(rand()/(float)RAND_MAX); /* Imprimir resultado. */ ... #include <stdlib.h> /* Indica valor inicial (semente) para o gerador de números aleatórios. */ srand(número);

Matrizes aleatórias Faça um programa que gera uma matriz aleatória. #include <stdio.h> #include <stdlib.h> #include <time.h> #define LIM 100 int main(){ float A[LIM][LIM]; int m,n,i,j; float Vmax; scanf("%d %d %f",&m,&n,&Vmax); srand(time(NULL)); for(i=0; i<m; i++) for(j=0; j<n; j++) A[i][j] = Vmax*(rand()/(float)RAND_MAX); /* Imprimir resultado. */ ... #include <stdlib.h> /* retorna número aleatório, no intervalo de 0 a RAND_MAX*/ rand();

Matrizes aleatórias Faça um programa que gera uma matriz aleatória. #include <stdio.h> #include <stdlib.h> #include <time.h> #define LIM 100 int main(){ float A[LIM][LIM]; int m,n,i,j; float Vmax; scanf("%d %d %f",&m,&n,&Vmax); srand(time(NULL)); for(i=0; i<m; i++) for(j=0; j<n; j++) A[i][j] = Vmax*(rand()/(float)RAND_MAX); /* Imprimir resultado. */ ... /* Para mais informações: http://www.ime.usp.br/~pf/algoritmos/aulas/random.html */

Exemplo: Problema das notas de alunos em vários testes. #include <stdio.h> int main(){ float notas[100][50]; float ma[100],mt[50]; int i,j,m,n; /* Leitura. */ printf("Qtd de alunos: "); scanf("%d",&m); printf("Qtd de testes: "); scanf("%d",&n); for(i=0; i<m; i++){ printf("aluno%02d: ",i+1); for(j=0; j<n; j++) scanf("%f",&notas[i][j]); }

Exemplo: Problema das notas de alunos em vários testes. /* Media por aluno e por teste. */ for(i=0; i<m; i++) ma[i]=0.0; for(j=0; j<n; j++) mt[j]=0.0; for(i=0; i<m; i++){ for(j=0; j<n; j++){ ma[i] += notas[i][j]; mt[j] += notas[i][j]; } for(i=0; i<m; i++) ma[i]/=n; for(j=0; j<n; j++) mt[j]/=m;

Exemplo: Problema das notas de alunos em vários testes. /* Impressao. */ printf("\n"); for(i=0; i<m; i++){ printf("aluno%02d: ",i+1); for(j=0; j<n; j++) printf(" %5.2f",notas[i][j]); printf(" => %5.2f\n",ma[i]); } printf("media: "); printf(" %5.2f",mt[j]); return 0;