Professional Documents
Culture Documents
Estruturas de Dados
Os
Vetores
2,4
7,8
3,6
5,3
9,1
9,8
6,5
9,8
4,7
38
1,5
39
2,8
40
4,6
Vetores
Manipulao:
Para manipular os elementos de um vetor
devemos especificar a sua posio.
dados
2,4
7,8
7,8
3,6
5,3
9,1
9,8
6,5
9,8
4,7
1,5
38
2,8
39
4,6
40
-dados[8]
A posio do vetor determinada por meio de uma
constante, de uma expresso aritmtica ou de uma
varivel que estiver dentro dos colchetes. Ela
tambm chamada de ndice.
Vetores
Exerccio Sendo o vetor v igual a
2
7,8
6
10
21
33
14
10
Vetores
Algoritmo 2 Leia dois vetores inteiros de 50
posies, some seus correspondentes elementos e
imprima o resultado da soma
inteiro: va[50],vb[50],vc[50],i
inicio
para i de 1 at 50 repita
leia (va[i],vb[i] )
vc[i] va[i] + vb[i]
escreva (vc[i])
fimpara
fim.
Vetores
Algoritmo 3 Preencha um vetor de 100 inteiros,
colocando 1 na posio par e 0 na posio impar
inteiro: vetor[100],i
inicio
para i de 1 at 100 repita
se (mod(i,2)=0) ento
vetor[i] 1
seno
vetor[i] 0
fimpara;
fim.
Vetores
Algoritmo 4 Altere o exemplo da soma de vetores
para que esta realize a seguinte operao: produto
do primeiro vetor pelo inverso do segundo. Os
vetores possuem 20 posies e contm valores reais.
Algoritmo <produto>
inteiro: i
real: V[20],a[20],b[20]
inicio
para i de 1 at 20 repita
V[i] a[i]*b[21-i]
fim para
fim.
Vetores
Algoritmo 5 Igual que o algoritmo 4, s que o
resultado dos produtos dos valores correspondentes
devem ser armazenados a partir do centro para as
bordas, de modo alternado.
Algoritmo <produto2>
real: V[20],a[20],b[20]
inteiro: i
inicio
para i de 1 at 10 repita
v[11-i]=a[11-i]*b[10+i]
v[10+i]=a[10+i]*b[11-i]
fim para
fim.
Vetores
Algoritmo 6 Escreva uma algoritmo que leia um
vetor de 20 elementos e conte quantos valores
pares existem no vetor.
Algoritmo <contagempares>
inteiro: V[20],i,c
inicio
c 0
para i de 1 at 20 repita
leia (V[i])
Se (mod(V[i],2)=0) ento
c c+1
fim se
fim para
escreva (c)
fim.
Vetores
Algoritmo 7 Escreva um algoritmo que leia um
vetor de 50 posies de nmeros inteiros e mostre
somente os positivos
Algoritmo <positivos>
inteiro:V[50], i
inicio
para i de 1 at 50 repita
leia (V[i])
se (V[i]>0) ento
escreva (V[i])
fim se
fim para
fim.
Vetores
Algoritmo 8 Escreva um algoritmo que leia um
vetor de 80 elementos inteiros, encontre e mostre o
menor elemento e sua posio no vetor.
Algoritmo <menorelemento>
inteiro:V[80], i, ind,menor
inicio
leia (V[1])
menorV[1]
ind1
para i de 2 at 80 repita
leia (V[i])
se (V[i]<menor) ento
menorV[i]
indi
fim se
fim para
fim.
Vetores
Algoritmo 9 Faa um algoritmo que leia um
conjunto de 10 valores inteiros e os coloque em dois
vetores conforme forem pares ou mpares.
Algoritmo <doisvetores>
inteiro:V[10], V1[10],V2[10],i,c1,c2
inicio
c1
c2
para i de 1 at 10 repita
leia (V[i])
se (mod(V[i],2)=0) ento
V1[c1]V[i]
c1c1+1
seno
V2[c2]V[i]
c2 c2
fim se
fim para
fim.
Vetores
Algoritmo 10 Ler um vetor v de 10 elementos inteiros e
obter um vetor fat cujos componentes so os fatoriais dos
respectivos componentes de v.
Algoritmo <doisvetores>
inteiro:v[10], fat[10],i,j
inicio
para i de 1 at 10 repita
leia (v[i])
fat[i]1
Para j de 1 at v[i] repita
fat[i]fat[i]*j
Fim Para
fim.
Vetores
Algoritmo 11 Escreva um algoritmo que leia um vetor G de
20 elementos literais que representa o gabarito de uma
prova. A seguir para cada um dos 50 alunos da turma, leia o
vetor de respostas R do aluno. Mostre o nmero de acertos
do aluno e uma mensagem APROVADO, se a nota for maior
ou igual a 6; e uma mensagem de REPROVADO, caso
contrrio.
Vetores
Algoritmo <prova>
notaacertos*0.5
literal:G[20], R[20]
se (nota>=6) ento
inteiro:i,j,acertos
escreva (APROVADO)
inicio
seno
para i de 1 at 20 repita
escreva(REPROVADO)
leia (G[i])
fim para
fim se
para j de 1 at 50 repita
fim para
acertos 0
fim
Para i de 1 at 20 repita
leia R[i]
se (R[i]=G[i]) ento
acertos
acertos+1
fim se
fim para
Vetores
Algoritmo 12 Faa um algoritmo que leia um
cdigo numrico inteiro e um vetor de 50 posies
de nmeros reais. Se o cdigo for 0 termine o
algoritmo, se for 1, mostre o vetor na ordem direta,
e se for 2, mostre o vetor na ordem inversa.
Vetores
Algoritmo <opcoes>
inteiro:i,codigo
real: vetor[50]
inicio
leia (codigo)
se (codigo>0 e codigo<=2) ento
para i de 1 at 50 repita
leia (vetor[i])
fim para
se (codigo=1) ento
para i de 1 at 50 repita
escreva (vetor[i])
fim para
seno
para i de 50 at 1 passo -1 repita
escreva (vetor [i])
fim para
fim se
fim se
fim
Vetores
Algoritmo 13 Faa um algoritmo que leia dois
conjuntos de nmeros inteiros tendo cada um 20
elementos e apresente os elementos comuns
(interseo de conjuntos).
Vetores
Algoritmo <intersecao>
real: a[20], b[20], c[20]
inteiro: m, n, i, j, k
Inicio
Para i de 1 at 20 repita
Leia( a[i] ,b[i])
Fim_para
k0
Para i de 1 at 20 repita
Para j de 1 at 20 repita
Se( a[i] = b[j] ) ento
k k+1
c[k] a[i]
Fim_se
Fim_para
Fim_para
Se ( k=0 ) ento
Escreva(Interseo Vazia. )
Seno
Escreva(Conjunto Interseo:)
Para i de 1 at k repita
Escreva( c[i] )
Fim_para
Fim_se
Fim
Obs. Com este algoritmo, se houver
elementos repetidos, tambm se
repetiro na sada. Como evitar isso?
Vetores
Algoritmo <intersecao2>
real: a[20], b[20], c[20]
inteiro: m, n, i, j, k
Inicio
Para i de 1 at 20 repita
Leia( a[i] ,b[i])
Fim_para
k 0, L0
Para i de 1 at 20 repita
j1
Enquanto (a[i]<>b[j] e j<=20) faa
j j+1
Fim enquanto
Vetores
Algoritmo 14 Uma locadora de vdeos tem
guardada, em um arquivo manual, a quantidade de
filmes retirados por cliente durante o ano de 2007.
Faa um algoritmo que
(a) leia um vetor de 500 posies para guardar esta
informao e
(b) crie um outro vetor contendo a quantidade de
locaes gratuitas a que cada cliente tem direito,
considerando que a locadora est fazendo uma
promoo e para cada 10 filmes retirados ganha-se
uma locao grtis.
Vetores
Algoritmo <locadora>
inteiro:i,locacoes[500],gratuitas[500]
inicio
para i de 1 at 500 repita
leia (locacoes[i])
gratuitas[i] DIV(locacoes[i],10)
fim para
fim
Vetores
Algoritmo 15 Dado um polinmio P(x) de grau n,
da forma
P(x) = a0xn + a1xn-1 + ... + an-1x + an,
onde a0, a1, ..., an (reais) so os coeficientes do
polinmio. Faa um algoritmo para ler:
(a)n (o grau do polinmio), n<=100
(b)os coeficientes a0, a1, ..., an e
(c)uma sequncia de 5 valores para x.
O algoritmo deve calcular o valor de P(x) para cada
valor de x.
Vetores
Algoritmo <polinomio>
inteiro:i,n
real: a[101],x
incio
leia (n)
para i de 1 at n+1 repita
leia a[i]
fim para
para j de 1 at 5 repita
leia x
Px 0
para i de 1 at n+1 repita
Px Px+ a[i]*x**(n-i+1)
fim para
escreva (x,Px)
fim para
fim
Vetores
Algoritmo 16 Escrever um algoritmo que faa a
reserva de passagens areas de uma companhia.
Alm da leitura do nmero dos vos e quantidade de
lugares disponveis, ler vrios pedidos de reserva,
constitudos do nmero de carteira de identidade do
cliente e do nmero de vo desejado.
Para cada cliente, verificar se h disponibilidade no
vo desejado. Em caso afirmativo, imprimir o nmero
da identidade do cliente, e o nmero de vo,
atualizando o nmero de lugares disponveis. Caso
contrrio, avisar ao cliente da inexistncia de
lugares.
Indicando o fim dos pedidos de reserva, existe um
passageiro cujo nmero de carteira de identidade
9999. Considerar fixo e igual a 37 o nmero de vos
da companhia.
Algoritmo <reservapassagens>
inteiro:i,voos[37],disp[37],cliente,nvoo
incio
Para i de 1 at 37 repita
leia (voos[i],disp[i])
Fim Para
leia cliente
enquanto cliente<>9999 faa
leia nvoo
i0
repita
i i+1
at que (i=37 ou voos[i]=nvoo)
se (voos[i]=nvoo) ento
se (disp[i]>0) ento
escreva (cliente,nvoo)
disp[i] disp[i]-1
seno
escreva (nvoo, lotado)
fim se
seno
escreva (voo inexistente)
fim se
leia cliente
fim enquanto
fim
Vetores
Algoritmo 17 Faa um algoritmo que leia um vetor
de 20 inteiros e o coloque em ordem crescente,
utilizando a seguinte estratgia de ordenao:
Selecione o elemento do vetor de 20 posies que
apresente o menor valor.
Troque este elemento pelo primeiro.
Repita estas operaes, envolvendo agora apenas os
19 elementos restantes (trocando o de menor valor
com a segunda posio), depois os 18 elementos
(trocando o de menor valor com a terceira posio),
depois os 17,16 e assim por diante, at restar um
nico elemento, o maior deles. Este algoritmo
conhecido como algoritmo de seleo.
Animao em
http://www.youtube.com/watch?
feature=player_embedded&v=LuANFAXgQEw
Vetores
Algoritmo <ordemcrescente>
inteiro:i,j,vetor[20]
inicio
para i de 1 at 19 repita
inter 0
menor vetor[i]
indice i
para j de i+1 at 20 repita
se (vetor[j] < menor ) ento
menor vetor[j]
indice j
inter 1
fim se
fim para
se (inter=1) ento
vetor[indice] vetor[i]
vetor[i] menor
fim se
fim para
Vetores
Vetores
Algoritmo 19 Desenvolva um algoritmo que leia um
vetor de n posies inteiras (n<=20) e o coloque em
ordem crescente, utilizando como estratgia de
ordenao a comparao de pares de elementos
adjacentes, permutando-os quando estiverem fora de
ordem at que todos estejam ordenados (Algoritmo
da Bolha).
(Animao em
http://www.youtube.com/watch?
feature=player_embedded&v=gWkvvsJHbwY)
Vetores
Algoritmo <ordemcrescente2>
inteiro:i,j,aux,vetor[20]
inicio
Leia (n)
para i de 1 at n-1 repita
para j de 1 at n-i repita
se (vetor[j] >
vetor[j+1] )
ento
aux vetor[j]
vetor[j+1] vetor[j]
vetor[j] aux
fim se
fim para
fim para
Vetores
Algoritmo 20 Desenvolva um algoritmo que leia um
vetor de n posies inteiras (n<=20) e o coloque em
ordem crescente, utilizando como estratgia de
ordenao inserir um elemento k num vetor j
ordenado de k-1 elementos.
Vetores
Algoritmo <ordemcrescente3>
inteiro:i,j,elemento,vetor[20]
inicio
Leia (n)
para j de 2 at n repita
elemento vetor[j]
i j-1
enquanto (i>0 e vetor[i]>elemento)
vetor[i+1] vetor[i]
i i-1
fim enquanto
vetor[i+1] elemento
fim para
fim
Vetores
Tarefas:
Estude os exerccios resolvidos de
estrutura de repetio do livro Introduo
Programao 500 Algoritmos Resolvidos
de Anita Lopes.
Estude a lista de exerccios resolvidos de
estrutura de repetio que se encontra no
site da disciplina.
Resolva a lista de exerccios propostos de
estrutura
de
repetio
que
estar
disponvel no dia 31/05 no site da
disciplina.