Escolar Documentos
Profissional Documentos
Cultura Documentos
identificador: o nome que ser utilizado para referenciar o conjunto de variveis qtde_pos: o nmero de variveis, ou de posies, que ser criado (tamanho do vetor)
04/05/2012
Observaes
A primeira posio do vetor tem ndice 0 A ltima posio do vetor tem ndice n-1 Na execuo do programa, no verificado se um acesso est dentro dos limites de um vetor Exemplo de vetor com 100 posies:
float Notas[100]
Posio Contedo 0 1 2 3 ... ... 96 97 98 99
Exerccio - Resoluo
#define T1 5 #define T2 7 #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { float V1[T1], V2[T2]; int i, j; for (i = 0; i < T1; i++) { printf("Informe os valores da primeira tabela: "); scanf("%f", &V1[i]); } for (i = 0; i < T2; i++) { printf("Informe os valores da segunda tabela: "); scanf("%f", &V2[i]); } for (i = 0; i < T1; i++) for (j = 0; j < T2; j++) if ( V1[i] == V2[j] ) printf (Encontrado valor %3.1f\n, V1[i]); system("PAUSE"); return 0; }
Matrizes
04/05/2012
Questo
Como tratar um conjunto grande de informaes que gostaramos que ficasse disponvel para reutilizar num programa, mas que eu tenha que tratar mais de uma dimenso? Exemplos:
Alunos e suas notas e mdias Fornecedores e seus preos de produtos
Definio de Matriz
Uma Matriz um tipo de dado utilizado para representar uma certa quantidade de variveis do mesmo tipo, semelhante ao Vetor, mas que podemos associar vrias dimenses Exemplo: uma lista de Fornecedores e os Preos de seus produtos (2 dimenses)
Posies 0 Forn 1 1 Forn 2 2 Forn 3 3 Forn 4 4 Forn 5 0 Prod 1 R$ 1.99 R$ 2.10 R$ 1.99 R$ 1.95 R$ 2.18 1 Prod 2 R$ 20.05 R$ 25.00 R$ 20.15 R$ 21.05 R$ 20.05 2 Prod 3 R$ 900.00 R$ 850.00 R$ 900.00 R$ 899.99 R$ 930.00 3 Prod 4 R$ 200.23 R$ 190.00 R$ 250.20 R$ 180.50 R$ 200.23
Declarao de Matriz
<tipo_var> identificador [<qtde1>] [<qtde2>]...; Onde:
tipo_var: o tipo das variveis que devem ser criadas. Ex.: int, char, float, entre outros
Isso significa que todos os elementos tem o mesmo tipo estrutura de dados homognea
identificador: o nome que ser utilizado para referenciar o conjunto de variveis qtde1/2/...: o nmero de variveis, ou de posies, que ser criado, para cada dimenso da matriz
04/05/2012
Exemplos
Na declarao:
float notas[30][3]; // Representa 30 alunos e 3 notas cada
Exemplos
Para andarmos na matriz, agora que temos mais de uma dimenso, um comando de repetio sozinho no possvel Temos que utilizar um comando de repetio para cada dimenso da matriz
1 Integr. 7.2 6.4 5.8 9.3 8.4 2 Prova 7.7 6.8 7.0 8.5 6.9
Nas operaes:
notas[0][0] = 1; scanf(%c, &letras[6][4]); media[3]=(notas[3][0]*0.2)+(notas[3][1]*0.2)+(notas[3][2]*0.6);
Posies 0 Aluno 1 1 Aluno 2 2 Aluno 3 3 Aluno 4 4 Aluno 5 0 Lista 7.0 6.6 8.1 7.5 8.4
Exemplo: uma matriz de duas dimenses, como o exemplo anterior das notas dos alunos
for ( i = 0; i < Alunos; i++) // Para cada Aluno for ( j = 0; j < Notas; j++) // Para cada Nota printf (\n Aluno %d Nota %d: %2.1f, i+1, j+1, notas[i][j]);
Comando Define
Utilizamos da mesma foram que em Vetor A declarao Define permite que coloquemos em um ponto s do programa os tamanhos das diferentes dimenses das tabelas Exemplo: Montarmos uma matriz com 3 notas para cada aluno
1. 2. 3.
04/05/2012
Exerccio
Utilizando o problema anterior das Notas dos alunos, vamos assumir a seguinte frmula para calcular a mdia dos alunos, que ser colocada na posio 3 (4. elemento da coluna)
notas[i,3]=(notas[i][0]*0.2)+(notas[i][1]*0.2)+(notas[i][2]*0.6);
Posies 0 Aluno 1 1 Aluno 2 2 Aluno 3 3 Aluno 4 4 Aluno 5 0 Lista 7.0 6.6 8.1 7.5 8.4 1 Integr. 7.2 6.4 5.8 9.3 8.4 2 Prova 7.7 6.8 7.0 8.5 6.9 8.5 3 Mdias
M1 0 1 2
0 3 17 4
1 -3 10
3 0 -3
M2 0 1 2
0 7 4 9
1 8 0 11
3 -5 2 -3
MR 0 1 2
0 7 17 9
1 0 11
3 2 -3
8 15
8 15
04/05/2012
Exerccio - Resoluo
#define L 3 #define C 3 #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { float m1[L][C], m2[L][C], m3[L][C]; int i, j; for ( i = 0; i < L; i++) // Para cada Linha for ( j = 0; j < C; j++) // Para cada Coluna { printf("Informe dois numeros para a posicao [%d][%d]: ", i, j); scanf("%f %f", &m1[i][j], &m2[i][j]); } for ( i = 0; i < L; i++) // Para cada Linha for ( j = 0; j < C; j++) // Para cada Coluna if ( m1[i][j] >= m2[i][j]) m3[i][j] = m1[i][j]; else m3[i][j] = m2[i][j]; for ( i = 0; i < L; i++) // Para cada Linha { printf (\n\n); for ( j = 0; j < C; j++) // Para cada Coluna printf("[%d][%d]: %3.1f", i, j, m3[i][j]); } system("PAUSE"); return 0; }
Dvidas?
Temas abertos