apostila
259 pág.

apostila


DisciplinaAlgoritmos e Estrutura de Dados I707 materiais7.916 seguidores
Pré-visualização50 páginas
(Na\u2dco use multiplicac¸a\u2dco. Apenas operac¸o\u2dces
de soma):
1 x N
2 x N
3 x N
4 x N
5 x N
Isto e´, suponha que N=3. Enta\u2dco a sa´\u131da deve ser:
3
6
9
12
15
Outro exemplo, para N=6
6
12
18
24
30
4. Dado um nu´mero inteiro que representa uma quantidade de segundos, determi-
nar o seu valor equivalente em graus, minutos e segundos. Se a quantidade de
segundos for insuficiente para dar um valor em graus, o valor em graus deve ser
0 (zero). A mesma observac¸a\u2dco vale em relac¸a\u2dco aos minutos e segundos. Por
exemplo: 3.600 segundos = 1 grau, 0 minutos, 0 segundos. ; 3.500 segundos =
0 graus, 58 minutos e 20 segundos.
5. Dadas duas frac¸o\u2dces ordina´rias a/b e c/d, determinar a sua soma e o seu produto,
no formato de frac¸o\u2dces. A entrada de dados deve ser constitu´\u131da de duas linhas,
cada uma contendo dois inteiros, uma para a e b outra para c e d. A sa´\u131da
devera´ ser tambe´m de duas linhas cada uma contendo um par que representa o
numerador e o denominados da soma e produto calculadas.
50 CAPI´TULO 5. CONCEITOS ELEMENTARES
6. Ler uma seque\u2c6ncia de N nu´meros e imprimir a me´dia aritme´tica.
7. Calcular o produto dos nu´meros \u131´mpares de N1 a N2 (incluindo ambos), onde
N1 \u2264 N2 sa\u2dco lidos do teclado.
8. Calcule o valor da soma dos quadrados dos primeiros 50 inteiros positivos na\u2dco
nulos.
9. Ler uma massa de dados onde cada linha conte´m um nu´mero par. Para cada
nu´mero lido, calcular o seu sucessor par, imprimindo-os dois a dois em listagem
de sa´\u131da. A u´ltima linha de dados conte´m o nu´mero zero, o qual na\u2dco deve ser
processado e serve apenas para indicar o final da leitura dos dados.
10. Ler uma massa de dados onde cada linha conte´m um valor nume´rico do tipo
real. O programa deve calcular a me´dia aritme´tica dos diversos valores lidos,
imprimindo cada valor lido e, ao final, a me´dia calculada. A u´ltima linha de
dados conte´m o u´nico nu´mero zero. Este zero na\u2dco deve ser considerado no
ca´lculo da me´dia.
11. Ler uma massa de dados contendo a definic¸a\u2dco de va´rias equac¸o\u2dces do segundo
grau da forma Ax2 + Bx + C = 0. Cada linha de dados conte´m a definic¸a\u2dco de
uma equac¸a\u2dco por meio dos valores de A, B e C do conjunto dos nu´meros reais. A
u´ltima linha informada ao sistema conte´m 3 (tre\u2c6s) valores zero (exemplo 0.0 0.0
0.0). Apo´s a leitura de cada linha o programa deve tentar calcular as duas ra´\u131zes
da equac¸a\u2dco. A listagem de sa´\u131da, em cada linha, devera´ conter sempre os valores
de A, B e C lidos, seguidos dos valores das duas ra´\u131zes reais. Considere que o
usua´rio entrara´ somente com valores A, B e C tais que a equac¸a\u2dco garantidamente
tem duas ra´\u131zes reais.
12. Dados dois nu´meros inteiros positivos determinar quantas vezes o primeiro di-
vide exatamente o segundo. Se o primeiro na\u2dco divide o segundo o nu´mero de
vezes e´ zero.
13. Fac¸a um programa em Pascal que imprima exatamente a sa´\u131da especificada na
figura 1 (abaixo) de maneira que, em todo o programa, na\u2dco aparec¸am mais do
que tre\u2c6s comandos de impressa\u2dco.
14. Fac¸a um programa em Pascal que imprima exatamente a mesma sa´\u131da solicitada
no exerc´\u131cio anterior, mas que use exatamente dois comandos de repetic¸a\u2dco.
15. Fac¸a um programa em Pascal que receba dois nu´meros inteiros N e M como
entrada e retorne como sa´\u131da N MOD M usando para isto apenas operac¸o\u2dces de
subtrac¸a\u2dco. O seu programa deve considerar que o usua´rio entra com N sempre
maior do que N .
16. Adapte a soluc¸a\u2dco do exerc´\u131cio anterior para que a sa´\u131da seja exatamente con-
forme especificada na figura 2 (abaixo).
5.10. EXERCI´CIOS 51
17. Fac¸a um programa em Pascal que receba uma massa de dados contendo o saldo
banca´rio de alguns clientes de um banco e imprima aqueles que sa\u2dco negativos.
O u´ltimo saldo, que na\u2dco corresponde a nenhum cliente (e portanto na\u2dco deve ser
impresso), conte´m o valor \u2013999.999,99.
1
121
12321
1234321
123454321
12345654321
1234567654321
123456787654321
12345678987654321
Figura 1
1
121
12321
1234321
123454321
12345654321
1234567654321
123456787654321
12345678987654321
Figura 2
18. Para cada uma das expresso\u2dces aritme´ticas abaixo, determine o tipo de dados
da varia´vel que esta´ no lado esquerdo do comando de atribuic¸a\u2dco bem como o
resultado da expressa\u2dco que esta´ no lado direito:
(a) A := 1 + 2 \u2217 3;
(b) B := 1 + 2 \u2217 3/7;
(c) C := 1 + 2 \u2217 3 DIV 7;
(d) D := 3 DIV 3 \u2217 4.0;
(e) E := A+B \u2217 C \u2212D
19. Indique qual o resultado das expresso\u2dces abaixo, sendo:
a=6; b=9.5; d=14; p=4; q=5; r=10; z=6.0 ; sim= TRUE
\u2022 ((z/a)+b*a)-d DIV 2
\u2022 p*(r MOD q)-q/2
\u2022 NOT sim AND (z DIV y + 1 = x)
\u2022 (x + y > z) AND sim OR (y >= x)
20. Indique qual o resultado das expresso\u2dces abaixo, sendo:
a=5; b=3; d=7; p=4; q=5; r=2; x=8; y=4; z=6; sim=TRUE
(a) (z DIV a + b * a) - d DIV 2
(b) p / r MOD q - q / 2
(c) (z DIV y + 1 = x) AND sim OR (y >= x)
21. Escrever um programa em Pascal que leia do teclado uma seque\u2c6ncia de nu´meros
inteiros ate´ que seja lido um nu´mero que seja o dobro ou a metade do anterior-
mente lido. O programa deve imprimir na sa´\u131da os seguintes valores:
52 CAPI´TULO 5. CONCEITOS ELEMENTARES
\u2022 a quantidade de nu´meros lidos;
\u2022 a soma dos nu´meros lidos;
\u2022 os dois valores lidos que forc¸aram a parada do programa.
Exemplos:
Entrada
-549 -716 -603 -545 -424 -848
Sa\u131´da
6 -3685 -424 -848
Entrada
-549 -716 -603 -545 -424 646 438 892 964 384 192
Sa\u131´da
11 679 384 192
22. Escreva um programa que troque o conteu´do de duas varia´veis inteiras sem
utilizar varia´veis auxiliares.
23. Escreva em Pascal as seguintes expresso\u2dces aritme´ticas usando o m\u131´nimo poss´\u131vel
de pare\u2c6nteses:
(a) W
2
Ax2+Bx+C
(b)
P1+P2
Y\u2212Z R
W
AB
+R
24. Tente compilar este programa. Procure descobrir qual(is) e´ (sa\u2dco) o(s) erro(s) e
corrigi-lo(s).
(\u2217 programa que le um numero e retorna o ultimo algarismo \u2217)
(\u2217 escrito por Marcos Castilho em 22/10/2002, com erros . \u2217)
program ultalgarismo ;
begin
read (A)
writeln (A mod 10, A div 10) ;
end.
25. Seja o seguinte programa em Pascal :
program Misterio ;
var nota1 ,nota2 ,media: integer ;
begin
readln(nota1 ,nota2)
while nota1 <> 0 do
media:=nota1+nota2/2;
writeln(nota1 ,nota2 ,media) ;
readln(nota1 ,nota2) ;
end.
5.10. EXERCI´CIOS 53
(a) Quantos sa\u2dco, e quais sa\u2dco, os erros de compilac¸a\u2dco deste programa?
(b) Considerando que voce\u2c6 corrigiu os erros de compilac¸a\u2dco corretamente, o que
faz este programa?
(c) Considerando a estrutura do programa, os nomes das varia´veis e a en-
dentac¸a\u2dco usada, podemos afirmar que o programador cometeu alguns erros
de lo´gica. Quantos sa\u2dco e quais sa\u2dco estes erros?
(d) O que faz o programa faz apo´s estas correc¸o\u2dces?
26. Enumere e explique todos os erros contidos no seguinte co´digo Pascal :
program misterio2 ;
var
m, g: real ;
N1, N2: integer ;
begin
readln(N1, N2) ;
i f (N1 > N2) then
m := N2
else
m := N1;
g:= 1;
while g do
begin
if (N1 mod m = 0) AND (N2 mod m = 0) then
g := 0;
else
m := m\u2212 1;
end;
i f (m := N1) then
writeln(\u2019O valor resultante eh: \u2019 m) ;
end.
27. Dado o programa abaixo, mostre o acompanhamento de sua execuc¸a\u2dco para tre\u2c6s
valores de entrada (valores pequenos). Em seguida, descreva o que o programa
faz, comprovando suas afirmac¸o\u2dces.
program questao1(input , output) ;
var
x: integer ;
y, m: longint ;
begin
read(x) ;
y := 0;
m := 1;
while x > 0 do
begin
y := y + (x mod 2) \u2217 m;
x := x div 2;
m := m \u2217 10;
end;
writeln(y)
end.
54 CAPI´TULO 5. CONCEITOS ELEMENTARES
28. Uma age\u2c6ncia governamental deseja conhecer a distribuic¸a\u2dco da populac¸a\u2dco do pa´\u131s
por faixa salarial. Para isto, coletou dados do u´ltimo censo realizado e criou um
arquivo contendo, em cada linha, a idade de um cidada\u2dco particular e seu sala´rio.
As idades variam de zero