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;