Escolar Documentos
Profissional Documentos
Cultura Documentos
IMPORTANTE:
As respostas (programas) devero ser entregues em papel e em disquete para serem testados.
1a Questo (1,0 ponto): Escreva um programa que leia do teclado um inteiro n, maior ou igual a 1, e
que apresente no vdeo n linhas da forma abaixo. Por exemplo, as seguintes linhas devem ser
apresentadas se n = 5.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Se n < 1, uma mensagem de erro deve ser apresentada no vdeo.
Resposta:
var
n: integer;
begin
ler_valor_n(n);
imprimir_linhas(n)
end.
2a Questo (2,0 pontos): Faa um programa para encontrar: (a) o valor mdio dos N elementos
inteiros de um vetor V (Const N = 50) e (b) os m elementos mais prximos deste valor mdio.
Considere que todos os N elementos de V so distintos e que m < N. O valor m e os N elementos
inteiros do vetor devem ser lidos do teclado. O valor mdio e seus m elementos mais prximos devem
ser apresentados no vdeo.
Resposta:
program quest_02_AD1 (input{teclado}, output{vdeo}); { Esta resposta poderia ser mais eficiente se
o aluno j tivesse estudado algoritmos de ordenao,ou, pelo menos, insero ordenada.}
const
N = 50;
type
T_Dominio = 1 .. N;
T_Vetor = array[T_Dominio] of integer;
T_Vetor2 = array[T_Dominio] of real;
procedure ler_vetor_e_m (var V{s}: T_Vetor; var m{s}: integer);
var
ind: integer;
begin
write(output, 'Informe valor de m: ');
readln(input, m);
for ind:= 1 to N do
begin
write(output, 'V[', ind, ']=');
readln(input, V[ind]);
end
end;
procedure localiza_maior_dif_de_R (R{e}: T_Vetor; var posicao_maior_dif_de_R: integer;
media{e}: real; m{e}: integer);
{ Esta rotina localiza a maior diferena no vetor R.}
var
i: integer;
maior_dif_de_R: real;
begin
maior_dif_de_R := abs(R[1]-media);
for i := 2 to m do
ind: integer;
begin
writeln(output, 'A mdia dos N elementos : ', md:2:2);
write(output, 'Os ', m, 'elementos mais prximos so: ');
for ind:=1 to m do
write(output, R[ind], ' ')
end;
var
V,R: T_Vetor;
m: integer;
md: real;
begin
ler_vetor_e_m(V,m);
identificar_media_e_mais_proximos(V,m,R,md);
imprimir_resultado(m,R,md)
end.
3a Questo (2,0 pontos): Implemente, de forma recursiva, a busca binria de um elemento inteiro b
em um vetor V de N elementos inteiros (Const N = 100). Considere que todos os N elementos de V
so distintos. O valor b e os N elementos inteiros do vetor devem ser lidos do teclado. A posio do
vetor em que o elemento b se encontra deve ser apresentada no vdeo. Caso o elemento b no
aparea no vetor V, o valor zero deve ser apresentado.
Resposta:
function busca_binaria (V{e}: T_Vetor; inicio, fim{e}: integer; b{e}: integer): integer;
var
meio: integer;
begin
if inicio = fim then
if V[inicio] = b then
busca_binaria := inicio
else
busca_binaria := 0
else
begin
meio := (inicio + fim) div 2;
if V[meio] = b then
busca_binaria := meio
else
if V[meio] < b then
begin
inicio := meio + 1;
busca_binaria := busca_binaria (V, inicio, fim, b)
end
else
begin
fim := meio - 1;
busca_binaria := busca_binaria (V, inicio, fim, b)
end
end
end;
4a Questo (1,0 ponto): Faa um programa que leia strings do teclado e diga se cada string lida
uma palndroma. Uma string ser palndrome se e somente se a seqncia de caracteres do incio
para o final for idntica a seqncia de caracteres do final para o incio. Exemplos de palndromas:
aba, omo, abcdcba, abarraba e 1245421. Seu programa deve terminar quando a string lida for
uma string vazia .
Resposta:
5a Questo (2,0 pontos): Faa um programa para compactar strings conforme exemplificado a seguir:
String lida: aaaaaaaaaaaabbbbbbbbbbaaaaacccccccccbbbb
String compactada: a12b10a5c9b4
String lida: abacaxi
String compactada: a1b1a1c1a1x1i1
Resposta:
6a Questo (2,0 pontos): Faa um programa que leia strings contendo expresses aritmticas
(apenas soma) e calcula o valor correspondente expresso lida. Veja exemplos:
Expresso lida: 12.4+0.01+13
Valor calculado: 25.41
Expresso lida: 13
Valor calculado: 13
Resposta: