Gabarito da prova 3 – Programação I
Bruno Vilela Oliveira
Os códigos-fonte abaixo demonstram possíveis soluções para problemas propostos na segunda avaliação.
Questão 1;
program biblioteca;
Type livros = record
codigo: string[5];
titulo: string[100];
autor: string[100];
ano: integer;
quant: integer;
end;
Var
biblio: array[1..500] of livros;
i,j,cont, num_livros:integer;
num_consult: integer;
codigo: string[5];
encontrado: boolean;
Begin
{ler a informacao dos livros}
Writeln('digite o codigo do livro');
readln(codigo);
i:= 1;
while (codigo<>'00000') and (i <=500) do
Begin
biblio[i].codigo := codigo;
readln(biblio[i].titulo);
readln(biblio[i].autor);
readln(biblio[i].ano);
readln(biblio[i].quant);
writeln('digite o codigo do livro');
Readln(codigo);
inc (i);
End;
cont := i - 1;
{os dados ja estao no computador, agora vamos fazer consulta}
Writeln('digite o codigo');
Readln(codigo);
{vamos fazer busca do codigo no banco de dados (array)}
encontrado:=false;
j := 1;
while (j <= cont) and not encontrado do
if(codigo=biblio[j].codigo) then
encontrado:=true
else
inc(j);
if(encontrado) then
begin
writeln(biblio[j].titulo);
writeln(biblio[j].autor);
writeln(biblio[j].codigo);
writeln(biblio[j].ano);
writeln(biblio[j].quant);
end
else
writeln('nao encontrado');
end.
Questão 2 {três possíveis soluções utilizando funções}
Obs: esta solução inclui o programa principal, porém, na prova o programa principal não era
necessário. Foi apresentado aqui apenas para que o estudante possa testar a solução com
mais praticidade.
program palind;
{solução 1}
function palindromo(palavra: string): boolean;
var
i,tam: integer;
aux: string;
begin
tam := length (palavra);
for i := tam downto 1 do
aux := aux + palavra[i];
if aux = palavra then
palindromo := TRUE
else
palindromo := FALSE;
end;
{solução 2}
function palindromo2 (palavra: string):boolean;
var
i,tam: integer;
begin
tam := length(palavra);
palindromo2:= TRUE;
for i := 1 to tam do
if (palavra[i] <> palavra[tam - i +1]) then
palindromo2 := FALSE;
end;
{solução 3}
function palindromo3 (palavra: string):boolean;
var
i,m,tam: integer;
p : boolean;
begin
tam := length(palavra);
p:= TRUE;
i:= 1;
m := tam - i + 1;
while p and (i < m) do
begin
p := palavra[i] = palavra[m];
inc(i);
m := tam - i + 1;
end;
palindromo3 := p;
end;
var
s: string;
begin
readln(s);
writeln(palindromo(s));
writeln(palindromo2(s));
writeln(palindromo3(s));
end.
Questão 3;
program intercala_vets;
const
n = 25;
{declaração dos tipos necessaries}
type
TVet = array [1..n] of integer;
TVet2 = array[1..2*n] of integer;
{procedimento para leitura dos vetores}
procedure leVet(var v: TVet; n: integer);
var
i: integer;
begin
for i := 1 to n do
read(v[i]);
end;
{procedimento para geração do terceiro vetor com os elementos dos outros dois vetores
intercalados}
procedure intercala(v1,v2: TVet; var v3: TVet2; n: integer);
var
i,j: integer;
begin
i := 1;
j := 1;
while (j <= n+n) do
begin
v3[j] := v1[i];
v3[j+1] := v2[i];
inc (i);
inc(j,2);
end;
end;
{procedimento impressão dos elementos do vetor resultante}
procedure mostraVet(v: TVet2; n: integer);
var
i : integer;
begin
for i := 1 to n do
begin
write(v[i],' ');
end;
end;
{programa principal com as variáveis necessárias}
var
a,b: TVet;
c: TVet2;
t: integer;
begin
readln(t);
leVet(a,t);
leVet(b,t);
intercala(a,b,c,t);
mostraVet(c,(t+t));
end.
Download

Gabarito da prova 3 – Programação I Bruno Vilela Oliveira