ESTRUTURAS DE DADOS
Algoritmos – Aula 04
Estruturas de Dados

Tópicos
 Vetores
 Matrizes
 Registros
 Registro
de Conjuntos
 Conjuntos de Registros
Estruturas de Dados



Os tipos primitivos (inteiro, real, caracter e lógico) não são
suficientes para representar todos os tipos de informação.
Particularmente quando temos mais de uma informação
relacionada. Ex: Lista dos nomes dos alunos de uma sala,
endereço de alguém etc.
Utilizaremos os tipos primitivos para construir outras estruturas
de dados mais complexas.
Vetores


Também denominados Estruturas compostas homogêneas
unidimensionais
Permitem a manipulação de um conjunto de informações de
um mesmo tipo primitivo

Declaração :
tipo vetor[40];
Onde:
 vetor: Nome da estrutura unidimensional
 40: Limite final do vetor, iniciando o índice em 0 e indo ate 39
 tipo: Tipo primitivo base do vetor
Vetores
 Manipulação:
float vetor[40];
vetor[ 6 ] = 6.5;
vetor [ 1 ] = 7.8;
vetor [ 3 ] = 5,3;
scanf("%d", &A); // supondo que foi informado 5
vetor [ A ] = 9.8;
vetor [ A-1 ] = 9.1;
scanf("%f",vetor[A+3]); // supondo que foi informado 4,7
vetor
7.8
0
1
5.3
2
3
9.1
4
9.8
6.5
5
6
4.7
7
8
37
38
39
Vetores
Algoritmo 4.1 – Notas acima da média usando variáveis simples
int NotaAcima;
float A, B, C, D, E, F, G, H, I, J, Media;
NotaAcima = 0;
scanf("%f",&A);
...
scanf("%f",&J);
Media = (A + B + C + D + E + F + G + H + I + J)/10;
if (A > Media) {
NotaAcima;
}
if (B > Média) {
NotaAcima++;
}
...
if(J > Média) {
NotaAcima++;
}
printf("%d", NotaAcima);
Vetores
Algoritmo 4.2 – Notas acima da média usando vetor
float vetor [10];
int NotaAcima, X;
float Soma, Média;
Soma =0;
NotaAcima =0;
for(X= 1; X<10; X++){
scanf ("%f", &vetor[X] );
Soma = Soma + vetor[X];
};
Média = Soma / 10;
for( X = 1; X <10 ; X++){
if( vetor[X] > Média ) NotaAcima++;
}
printf("%d", NotaAcima);
Matrizes


Também denominadas Estruturas compostas homogêneas
multidimensionais
Permitem a manipulação de um conjunto de informações de
um mesmo tipo primitivo

Declaração:
int SALA [4][5];
Onde:
 SALA: Nome da matriz
 4: capacidade da primeira dimensão
 5: capacidade da segunda divisão.
 int: Tipo primitivo base da matriz
Matrizes
 Manipulação:
Int A, B;
SALA [ 1][2] = 5;
SALA [ 2][1]= 6;
SALA [ 0][1 ] = 7;
A = 3;
B = 2;
SALA [ A][B ] = 8;
SALA [ A ][B-2 ] = 9;
SALA [ A-2 ][B-2 ] = 10;
SALA [ B ][ A ] = 11;
SALA [ B-2 ][ A ] = 12;
MSALA
0
0
1
7
1 10
2
3 9
2
3
12
5
6
11
8
Matrizes

Exemplo: Cartão da Loteria Esportiva
Jg
Coluna 1
Ept
Coluna 2
1
Santos
Corinthians
2
Flamengo
Fluminense
3
Palmeiras
São Paulo
4
Vasco
Botafogo
5
Portuguesa
XV de jaú
6
São Caetano
XV de Piracicaba
7
Grêmio
Internacional
8
Havaí
Figueirense
9
Coritiba
Atlético-PR
10
Paysandú
Juventude
11
Atlético-MG
Cruzeiro
12
Brasiliense
Ponte Preta
13
Fortaleza
Goiás
14
Esportivo
Londrina
Matrizes
Algoritmo 4.3 – Loteria Esportiva, jogo mais marcado
int Loteria[14][3];
int I, J, maisMar, nJogo, marLin;
maisMar = 0;
for(int I = 0; i<14; i++){
marLin = 0;
for( J = 0; j <3; j++){
if(mLoteria[I][J] ==1){
marLin = marLin + 1;
}
}
if(marLin > maisMar} {
maisMar = marLin;
nJogo = I;
}
}
cout << “Jogo mais marcado: " <<
maisMar;
nJogo <<
"com " <<
Matrizes
Algoritmo 4.4 – Loteria Esportiva, coluna mais marcada
int Loteria [14][ 3];
inteiro I, J, maisMar, nColuna, marCol;
maisMar = 0;
for(int J=0; J<3; J++){
marCol=0;
for(int I=0 ; I<14; I++){
if(mLoteria[ I][J] == 1){
marCol = marCol + 1;
}
}
if(marCol > maisMar){
maisMar = marCol;
nColuna = J;
}
}
cout << "Coluna mais marcada: " << nColuna << "com " <<
maisMar;
Download

Apresentação da aula