Vetores (2)
Continuação
Caso 1: Qual o menor valor ?
Início
TIPO vcu = vetor [1..10] de inteiros; //variável composta uniforme
vcu : vetor;
Inteiro: min, i, n, pos;
Ler (n);
PARA i DE 1 ATÉ n PASSO 1 FAÇA
Ler ( vetor[i] ) ;
FIM PARA
Min = vetor[1];
PARA i DE 2 ATÉ n PASSO 1 FAÇA
SE min < vetor[i] ENTAO
inicio
min  vetor[i];
pos  i ; // a posição que se encontra
fim
FIM SE
FIM PARA
Escreve ( ‘menor valor: ‘, min, ‘ na posicao : ‘ , pos);
FIM
Ordenar vetor
99 6
8
3
10 9
1
aux
21 33 14
Estratégia
• Usar uma variável simples como “recipiente” de
troca : inteiro aux
• Descobrir o menor valor do vetor e sua posição
• Armazenar esse “primeiro” menor em aux
• Trocar : valor do vetor[1] vai para posição do
menor
• Copiar valor de Aux para vetor[1] ...
• O menor valor está na posição 1 !!!
Ordenar vetor ...
aux
99 6
8
3
10 9
1
pos
21 33 14
Usando o algoritmo do caso 1, descobriu-se que o menor
valor é 1 !!! E está na posição 7...
Ordenar vetor ...
99 6
8
3
10 9
1
[7]
21 33 14
aux
pos
Ordenar vetor ...
99 6
8
3
10 9
1 21 33 14
aux
1
????
pos
7
Falta colocar o menor valor na primeira posição ( ou índice ) do
vetor. Mas será trocado o valor que lá está , pois não se quer
perdê-lo.
Ordenar vetor ...
99 6
8
3
10 9
1 21 33 14
aux
1
pos
7
!!!!
Vai ser trocado o valor que está na primeira posição para que o
menor valor do vetor esteja em primeiro.
Ordenar vetor ...
[pos]
99 6
8
3
10 9
1 21 33 14
aux
1
pos
7
O valor da primeira posição do vetor é atribuído para a posição
7 !!!!
Ordenar vetor ...
99 6
8
3
10 9
99 21 33 14
aux
1
pos
7
O valor da primeira posição do vetor para para a posição 7 !!!!
Ordenar vetor ...
1
6
8
3
10 9
99
21 33 14
aux
1
pos
7
Agora, o menor valor vai para o seu lugar ( a primeira posição
do vetor ).
Próximo passo ... Ordenar os demais ...
Ordenar vetor ...
1
6
8
3
10 9
99 21 33 14
aux
pos
Usar o algoritmo de encontrar o menor novamente, mas ignorar
a primeira posição ( já é o menor )
Agora, o menor valor vai para o seu lugar ( a primeira posição
do vetor ).
Ordenar vetor ...
1
6
8
3
[4]
10 9
99 21 33 14
aux
pos
Usar o algoritmo de encontrar o menor novamente, mas ignorar
a primeira posição ( já é o menor )
Agora, o menor valor vai para o seu lugar ( a primeira posição
do vetor ).
Ordenar vetor ...
1
6
8
3
[4]
10 9
99 21 33 14
aux
3
pos
4
Usar o algoritmo de encontrar o menor novamente, mas ignorar
a primeira posição ( já é o menor )
Agora, o menor valor vai para o seu lugar ( a primeira posição
do vetor ).
Ordenar vetor ...
1
6
8
3
????
10 9
99 21 33 14
aux
3
pos
4
Usar o algoritmo de encontrar o menor novamente, mas ignorar
a primeira posição ( já é o menor )
Agora, o SEGUNDO menor valor vai para o seu lugar ( a
SEGUNDA posição do vetor ). Antes deve-se mover o conteúdo
da segunda posição para ONDE pos indicar ...
Ordenar vetor ...
1
6
8
[pos]
3 10 9
99 21 33 14
aux
3
pos
4
Usar o algoritmo de encontrar o menor novamente, mas ignorar
a primeira posição ( já é o menor )
Agora, o SEGUNDO menor valor vai para o seu lugar ( a
SEGUNDA posição do vetor ). Antes deve-se mover o conteúdo
da segunda posição para ONDE pos indicar ...
Ordenar vetor ...
1
6
8
[pos]
6 10 9
99 21 33 14
aux
3
pos
4
Agora, falta apenas transferir o SEGUNDO menor valor ( em
aux) para a SEGUNDA posição do vetor
Ordenar vetor ...
1
6
8
[pos]
6 10 9
99 21 33 14
aux
3
pos
4
Agora, falta apenas transferir o SEGUNDO menor valor ( em
aux) para a SEGUNDA posição do vetor
Ordenar vetor ...
1
3
8
[pos]
6 10 9
99 21 33 14
aux
3
pos
4
Agora, falta apenas transferir o SEGUNDO menor valor ( em
aux) para a SEGUNDA posição do vetor
Ordenar vetor ...
1
3
8
6
10 9
99 21 33 14
aux
pos
Agora, repetir o processo com os demais elementos ...
E começar a partir da terceira posição, já que se ordenou o
primeiro e segundo menor elemento ...
E assim sucessivamente, até o penúltimo elemento ser
processado...
Sugestão de exercício
1.
2.
Faça o procedimento para encontrar o maior elemento.
Use esse procedimento para ordenar o vetor ( encontrar o maior
, trocar , colocar o maior elemento na última posição do vetor )
...
Crie 2 vetores de mesmo tamanho e com mesmo tipo. Atribua
valores diferentes entre esses vetores. Realize com eles:
3.
•
•
•
•
4.
Soma
Subtração
Multiplicação
Divisão
Tome um dos vetores do exercício 3 e, para cada elemento, com
seja K lido pelo usuário, faça
–
–
–
–
Somar o valor k
Subtrair o valor k
Multiplicar por k
Dividir por k
Sugestão de exercício
5. Dado o vetor
2
1
8
6
10 9
99 21 33 14
•Escreva todos os elementos ímpares do vetor
•Escreva todos os elementos de índice/posição ímpar
Fortran
•Vetores = Arrays ( conjuntos )
inicio
program testeVetor;
TIPO vreal = vetor[1..6] de real;
vreal : vmedia;
real vmedia(6)
Inteiro: i ;
integer i
Para i DE 1 ATÉ 6 PASSO 1
Faça
vmedia[i] i
do i=1,6,1
escrever( i, vmedia[i] );
vmedia(i) = i
FIM PARA
print*, i, vmedia(i)
FIM
end do
end
•Dimension
inicio
Fortran
TIPO vreal = vetor[1..6] de real;
vreal : vmedia;
Inteiro: i ;
Para i DE 1 ATÉ 6 PASSO 1
Faça
vmedia[i] i
escrever( i, vmedia[i] );
FIM PARA
FIM
program testeVetor;
real vmedia
Dimension vmedia(1:6);
do i=1,6,1
vmedia(i) = i
print*, i, vmedia(i)
end do
end
Download

Vetores (2)