Buscar

lab5 vetores

Prévia do material em texto

Lab. 5
Vetores
ECT2303 - T02 - 18.1
5.1 Exerc´ıcio de Aprendizagem
1. Colocar em ordem crescente 5 valores nume´ricos armazenados no vetor A e apre-
senta´-los.
1 algoritmo ordemCrescente
2 var
3 A: vetor [1..5] de inteiro
4 I, J, AUX: inteiro;
5 in´ıcio
6 para I de 1 ate´ 5 passo 1 fac¸a
7 leia (A[ I ])
8 fimpara
9 para J de 1 ate´ 4 passo 1 fac¸a
10 para I de 1 ate´ 4 passo 1 fac¸a
11 se ( A[ I ] > A[ I + 1 ] ) enta˜o
12 AUX ← A[I]
13 A[ I ] ← A[ I + 1 ]
14 A[ I + 1 ] ← AUX
15 fimse
16 fimpara
17 fimpara
18 para I de 1 ate´ 5 passo 1 fac¸a
19 escreva ( A[ I ] )
20 fimpara
21 fim
5.2 Exerc´ıcio de Fixac¸a˜o
1. Ler 12 elementos de vetor, coloca´-los em ordem decrescente e apresentar os elemen-
tos ordenados.
2. Ler treˆs matrizes (A, B e C) de uma dimensa˜o com n elementos cada. Construir uma
1
matriz D, sendo esta a junc¸a˜o das treˆs outras matrizes. Apresentar os elementos
da matriz D.
3. Ler duas matrizes A e B de uma dimensa˜o com n elementos. A matriz A devera´
aceitar apenas a entrada de valores pares, enquanto a matriz B devera´ aceitar
apenas a entrada de valores ı´mpares. A entrada das matrizes devera´ ser validada
pelo programa e na˜o pelo usua´rio. Construir uma matriz C de forma que a matriz
C seja a junc¸a˜o das matrizes A e B. Apresentar a matriz C.
4. Ler 20 elementos de uma matriz A tipo vetor e construir uma matriz B de mesma
dimensa˜o com os mesmo elementos da matriz A, sendo que devera˜o estar invertidos.
Ou seja, o primeiro elemento de A passa a ser o u´ltimo de B, o segundo elemento
de A passa a ser o penu´ltimo elemento de B e assim por diante. Apresentar as
matrizes A e B lado a lado.
5. Fac¸a um programa que calcula a me´dia das estaturas de uma turma com n alunos.
O program deve exibir um vetor com as estaturas abaixo da me´dia e um outro vetor
com as estaturas acima da me´dia.
6. Implemente um programa em C++ que receba dois vetores de float, denominados
u e v, cada um com n elementos. A seguir o programa deve calcular os seguintes
resultados, assumindo u = [u0, u1, ..., un−1]t e v = [v0, v1, ..., vn−1]t
� Produto interno: O resultado e´ um nu´mero p, definido como:
p = ut.v =
n−1∑
i=0
ui.vi = u0.v0 + u1.v1 + ... + un−1.vn−1,
� Produto elemento a elemento: O resultado e´ um vetor y, com o mesmo nu´mero
de elementos de u e v, onde:
y = [u0 ∗ v0, u1 ∗ v1, ..., un−1 ∗ vn−1]t
Exemplo de execuc¸a˜o:
Digite o numero de elementos dos vetores ’u’ e ’v’: 5
Digite os elementos do vetor ’u’:
-2.1 0.4 -3.2 -1.2 4.8
Digite os elementos do vetor ’v’:
0.7 -3.5 0.5 1.9 -2.2
Produto interno entre ’u’ e ’v’: -17.31
Produto elemento-a-elemento entre ’u’ e ’v’:
-1.47 -1.4 -1.6 -2.28 -10.56
7. A regressa˜o linear por mı´nimos quadrados e´ um procedimento no qual os coeficientes
a1 e a0 da equac¸a˜o f(x) = a1x+ a0 sa˜o determinados de tal forma que essa func¸a˜o
leve ao melhor ajuste de um determinado conjunto de pontos. Os coeficientes a1 e
a0 sa˜o calculados utilizando as sequintes equac¸o˜es:
2
a0 =
(
n∑
i=1
x2i
)(
n∑
i=1
yi
)
−
(
n∑
i=1
xiyi
)(
n∑
i=1
xi
)
n
n∑
i=1
x2i −
(
n∑
i=1
xi
)2
a1 =
n
n∑
i=1
xiyi −
(
n∑
i=1
xi
)(
n∑
i=1
yi
)
n
n∑
i=1
x2i −
(
n∑
i=1
xi
)2
Fac¸a um programa que calcule os coeficientes da reta f(x) mais pro´xima dos pontos
(xi, yi).
Exemplo de execuc¸a˜o:
x = [62 116 55 30 46];
y = [225 360 215 150 180];
a1 = 2.4691387 a0 = 73.407228
8. Um gra´fico muito importante em estat´ıstica e´ o histograma de classes, que informa
a frequeˆncia relativa de um conjunto de dados (classes). Para aplicar este conceito,
tome o seguinte exemplo:
Suponha que se dispo˜e da informac¸a˜o do nu´mero de carros que circularam em uma
importante avenida da cidade em va´rios dias. Deseja-se construir um histograma
que classifique o fluxo de carros em cinco grupos:
� Abaixo de 100 ve´ıculos/dia;
� Entre 100 e 200 ve´ıculos/dia;
� Entre 200 e 300 ve´ıculos/dia;
� Entre 300 e 400 ve´ıculos/dia;
� Acima de 400 ve´ıculos/dia.
Para isto, fac¸a um programa em C++ que recebe do usua´rio um vetor inteiro com
n elementos. Cada elemento do vetor sera´ o fluxo de carros em um dia i espec´ıfico.
A seguir o seu programa deve realizar os seguintes passos:
(a) Criar um segundo vetor cont, de tamanho fixo igual a 5, para contabilizar
as ocorreˆncias em cada classe. O vetor cont deve ser criado com todas as
posic¸o˜es zeradas; como sugesta˜o, utilize o processo de inicializac¸a˜o de vetores
visto em sala;
(b) Contabilizar cada ocorreˆncia de fluxo do vetor de entrada em uma posic¸a˜o do
vetor cont, utilizando a seguinte refereˆncia:
� cont[0]: Fluxo abaixo de 100 ve´ıculos/dia;
� cont[1]: Fluxo maior ou igual a 100 e menor que 200 ve´ıculos/dia;
3
� cont[2]: Fluxo maior ou igual a 200 e menor que 300 ve´ıculos/dia;
� cont[3]: Fluxo maior ou igual a 300 e menor que 400 ve´ıculos/dia;
� cont[4]: Fluxo maior que 400 ve´ıculos/dia.
Como exemplo, se o valor for menor que 100, o valor de classes[0] devera´
ser incrementado em uma unidade; caso o valor seja maior que 100 e menor
que 200, o valor de classes[1] devera´ ser incrementado; e assim por diante.
(c) Utilizar o vetor cont para imprimir na tela o seguinte padra˜o na tela:
000 - 100: ***
100 - 200: *****
200 - 300: *********
300 - 400: ****
400 - >>>: **
Nele, ha´ um texto informando qual e´ a classe; a seguir, uma sequeˆncia de aste-
riscos referente ao nu´mero de elementos contabilizados em cont (por exemplo,
o gra´fico dado acima supo˜e cont = [3, 5, 9, 4 ,2]). Como sugesta˜o
para impressa˜o deste padra˜o, repita, para cada classe o seguinte processo:
� Imprima o texto com a classe;
� Crie um lac¸o de 1 ate´ o valor armazenado em cont[i], onde i e´ ı´ndice
associado a`quela classe. Em cada iterac¸a˜o deste lac¸o, voceˆ ira´ imprimir
um asterisco.
Para obter o efeito desejado, as duas etapas devem ser feitas na mesma linha.
Ao final da impressa˜o dos asteriscos, deve ser impressa uma quebra de linha
com o comando endl.
Exemplo de execuc¸a˜o do programa:
Digite o numero de dias verificados:
10
Digite os fluxos dos dias:
304 179 248 87 213 278 319 1094 291 218
-- Passo intermediario: nao precisa ser impresso. --
Vetor de ocorrencias:
1 1 5 2 1
----------------------------------------------------
Histograma:
000 - 100: *
100 - 200: *
200 - 300: *****
300 - 400: **
400 - >>>: *
4
5.3 Refereˆncias Bibliogra´ficas
1. MANZANO, J.A.; OLIVEIRA, J.F.; Algoritmos - Lo´gica para Desenvolvi-
mento de Programac¸a˜o. Editora Erica.
2. ASCENCIO, A.F.G.; CAMPOS, E.A.V. Fundamentos da Programac¸a˜o de
Computadores - Algoritmos, Pascal e C/C++. 3ed. Editora Pearson.
3. DEITEL, H. M.; DEITEL, P. J. C++ Como Programar. 3ed. Editora Book-
man.
5

Continue navegando