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.