Programando com Pascal - Respostas+Exercícios+Pascal

December 14, 2018 | Author: Mich Douglas | Category: Mathematics, Physics & Mathematics, Mathematical Analysis, Algebra, Linear Algebra
Share Embed Donate


Short Description

Download Programando com Pascal - Respostas+Exercícios+Pascal...

Description

Programando com Pascal Respostas dos Exercícios Propostos

Jaime Evaristo Instituto de Computação Universidade Federal de Alagoas

Programando com Pascal Respostas dos Exercícios Propostos

Jaime Evaristo Instituto de Computação Universidade Federal de Alagoas

Capítulo 1 1 Naturalmente, na primeira travessia, um índio levaria um branco até a outra margem e voltaria sozinho. A questão é a segunda: nã o  poderia atravessar um índio e um branco, pois, ao chegar na outra margem, haveria dois brancos e um índio; não poderiam atravessar dois índio, pois o terceiro ficaria com dois brancos. A soluão é atravessar dois brancos e um deles retornar. A terceira travessia s!  pode ser feita por dois índios, pois "# e$istem dois brancos na outra margem. A questão é o retorno. A %nica possibilidade é retornar um índio e um branco& 'emos então o seguinte algoritmo:

(. Atravessem um índio e um branco. ). *etorne o índio. +. Atravessem dois brancos. . *etorne um branco. -. Atravessem dois índios. . *etornem um índio e um branco. /. Atravessem dois índios. 0. *etorne um branco. 1. Atravessem dois brancos. (2. *etorne um branco. ((. Atravessem dois brancos. ! 3ndicando por (, ), +, , ... os discos na ordem crescente dos seus di4metros, temos para o caso n 5 ):

(. 6isco ( da origem  para auxiliar . ). 6isco ) da origem  para o destino. +. 6isco ( da auxiliar  para  para o destino. 7ara o caso n 5 +, basta observar que é necess#rio apenas transportar os dois discos ( e ) da origem para auxiliar  8que   8que é o caso anterior9, transportar o disco + da origem  para o destino e os discos ( e ) da torre auxiliar  para   para o destino 8que é, novamente, o caso anterior9. (. 6isco ( da origem  para destino. ). 6isco ) da origem  para auxiliar . +. 6isco ( do destino  para auxiliar . . 6isco + da origem para destino. -. 6isco ( da auxiliar para origem . . 6isco ) da auxiliar  para  para o destino. /. 6isco ( da origem  para o destino. " 7ara facilitar a linguagem, indiquemos por 78m, n9 5 2 se as esferas m e n tm o mesmo peso e por 78m, n9  2 se a esfera m pesa mais que a esfera n. 'emos então a seguinte soluão:

(. 7ese as esferas ( e ). ). rac8'roco9; =entavos :5 (runc8(22 I 'roco9; oeda :5 -2; '0ile =entavos  2 do &egin  Numoedas :5 =entavos div oeda; i.  Numoedas  2 t0en &egin H, Numoedas,H moedas de H, oeda, H =entavosH9; 'riteln8H =entavos :5 =entavos mod moeda; end; i.  oeda mod (2 5 2 t0en oeda :5 oeda div ) else i.  oeda 5 )t0en oeda :5 (2 else oeda :5 (; end; end else i.  'roco 5 2 t0en 'riteln8HNao ha trocoH9 else 'riteln8H7agamento insuficienteH9; end. 1# F7rograma que determina o numero de termos da serie harmonica que devem ser somados para que a soma se"a maior que um real dadoG program at3mpar :5 f; end; F>uncao recursiva para a determinacao do fatorial imparG .unction >at3mpar*ec8m : integer9 : longint; &egin i.  m 5 ( t0en >at3mpar*ec :5 ( else >at3mpar*ec :5 m I >at3mpar*ec8m ? )9; end; " F>uncao que determina o fatorial primo de um numero primoG .unction >at7rimo8m : integer9 : longint; var f : longint; i : integer; F>uncao que verifica se um numero eh primoG .unction 7rimo8m : integer9 : &oolean; var i : integer; *aiz : real; &egin i :5 ); *aiz :5 -r(8m9; '0ile 8m mod i S 29 and 8i S5 *aiz9 do i :5 i K (; i.  i S5 *aiz t0en 7rimo :5 false else 7rimo :5 true; end; F=omandos da funcaoG &egin f :5 ); .or i :5 + to m do i.  7rimo8i9 t0en f :5 f I i; >at7rimo :5 f; end; # F>uncao que determina a soma dos algarismos de um inteiroG .unction uncao para calcular potencias de dezG .unction 7otencia6e(28e : integer9 : longint; var 7ot : longint; i : integer; &egin 7ot :5 (; .or i :5 ( to e do 7ot :5 7otI(2; 7otencia6e(2 :5 7ot; end; F3nicio da funcao 3nverteNumeroG &egin 3nvertido :5 2;  NAlgarismos :5 NumeroAlgarismos8n9; .or i :5 NAlgarismos ? ( do'nto 2 do &egin 3nvertido :5 3nvertido K 8n mod (29 I 7otencia6e(28i9; n :5 n div (2; end; 3nverteNumero :5 3nvertido; end;

Capítulo % 1 F7rocedimento que e$ibe um vetor na ordem inversaG procedure PscreveEetorNaLrdem3nversa8var v : 'Eetor; t : integer9; var i : integer; &egin .or i :5 t do'nto ( do 'rite8v\i],H H9; end; ! F>uncao que verifica se um vetor eh palindromoG .unction 7alindromo8v : 'Eetor; t : integer9 : &oolean; var i : integer; &egin i :5 (; '0ile 8v\i] 5 v\t ? i K (]9 and 8i S5 t div )9 do i :5 i K (; i.  i  t div ) t0en 7alindromo :5 true else 7alindromo :5 false; end; " F7rocedimento que intercala dois vetoresG procedure 3ntercalaEetores8var v(, v), v :'Eetor; t : integer9 var i : integer; &egin .or i :5 ( to )3t do i.  i mod ) 5 ( t0en

v\i] :5 v(\8iK(9 div )] else

v\i] :5 v)\i div )] end. # F7rocedimento que decompoe um vetor de inteiro em dois vetores, um com as componentes impares e outro com as componentes  paresG procedure 6ecompoeEetor7ares3mpares8var v, v(, v) : 'Eetor; t : integer; var M, l : integer9; var i : integer; &egin M :5 2; l :5 2; .or i :5 ( to t do i.  v\i] mod ) 5 ( t0en &egin M :5 M K (; v(\M] :5 v\i]; end else &egin l :5 l K (; v)\l] :5 v\i]; end; end; $ F>uncao que determina a norma de um vetorG .unction Norma8var v : 'Eetor; t : integer9 : real; var i : integer; uncao para calcular potencias de dezG .unction 7otencia6e(28e : integer9 : longint; var 7ot : longint; i : integer; &egin 7ot :5 (; .or i :5 ( to e do 7ot :5 7otI(2; 7otencia6e(2 :5 7ot; end; &egin i.  n 5 2 t0en 6ecimalBinario :5 2 else &egin i :5 2; '0ile n  2 do &egin i :5 i K (; 6igBinarios\i] :5 n mod ); n :5 n div ); end; i :5 i ? (; Binario :5 7otencia6e(28i9; .or " :5 ( to i do Binario :5 Binario K 6igBinarios\"] I 7otencia6e(28" ? (9; 6ecimalBinario :5 Binario; end; end; 1) F7rograma que determina a decomposicao em fatores primos de um inteiroG

program 6ecomposicaoPm>atores7rimos; t4pe 'atriz 5 arra4\(..(+, (..)] o. integer; var Num, N>atores : integer; 6ecomp : 'atriz; F7rocedimento para e$ibir uma matrizG procedure P$ibeatriz8var m : 'atriz; l, c : integer9; var i, " : integer; &egin .or i :5 ( to l do &egin .or " :5 ( to c do 'rite8m\i, "],H H9; 'riteln; end; end; F7rocedimento para armazenar numa matriz a decomposicao em fatores de um inteiroG procedure 6ecomp>atores8$ : integer; var m : 'atriz; var n : integer9; var >ator, ult : integer; &egin n :5 2; >ator :5 ); '0ile $  ( do &egin ult :5 2; '0ile $ mod >ator 5 2 do &egin ult :5 ult K (; $ :5 $ div >ator; end; i.  ult  2 t0en &egin n :5 n K (; m\n, (] :5 >ator; m\n, )] :5 ult; end; >ator :5 >ator K (; end; end; F7rograma principalG &egin 'riteln8H6igite um inteiroH9; readln8Num9; 'riteln8H6ecomposicao em fatores de H, Num,H:H9; 6ecomp>atores8Num, 6ecomp, N>atores9; P$ibeatriz86ecomp, N>atores, )9; end. 1* F7rograma que determina a media de um aluno da J>AOG program Avaliacao; t4pe 'Eetor 5 arra4\(..] o. real; var Notas : 'Eetor; edBimestral, 7rova>inal, ed>inal : real; F7rocedimento para armazenar as notasG procedure ArmazenaNotas8var v : 'Eetor9; var i : integer; &egin 'riteln8H6igite as notas das avaliacoes bimestraisH9; .or i :5 ( to  do readln8v\i]9; end; F>uncao para calcular a media das notas bimestraisG .unction edia8var v : 'Eetor9 : real; var i : integer; inal:2:)9 else 'riteln8HAluno reprovado com media final igual a H, ed>inal:2:)9; end. 1+ F7rocedimento que retorna a transposta de uma matrizG procedure 'ransposta8var at, 'ransp : 'atriz; m, n : integer9; var i, " : integer; &egin .or i :5 ( to m do .or " :5 ( to n do 'ransp\", i] :5 at\i, "]; end; !2 F7rocedimento para permutar duas linhas de uma matrizG procedure 7ermutaOinhas8var at : 'atriz; m, n, l, c : integer9; var i, " : integer; Au$ : 'atriz; &egin Au$\(] :5 at\l];

at\l] :5 at\c]; at\c] :5 Au$\(]; end; !1 F>uncao que verifica se uma matriz quadrada e triangularG .unction atriz'riangular8var at : 'atriz; n : integer9 : &oolean; var i, " : integer; 'riangular : &oolean; &egin 'riangular :5 true; i :5 (; '0ile 'riangular and 8i S5 n9 do &egin  " :5 i K (; '0ile 'riangular and 8" S5 n9 do i.  at\i, "] S 2 t0en 'riangular :5 false else  " :5 " K (; i :5 i K (; end; atriz'riangular :5 'riangular; end; !! F>uncao que verifica se uma matriz quadrada eh simetricaG .unction atrizuncao que converte um inteiro do sistema decimal para o sistema binario, tratando o numero do sistema binario como uma stringG .unction 6ecimalBinario8n : integer9 : string; var s, Binario : string; i, " : integer; &egin i :5 2; i.  n 5 2 t0en 6ecimalBinario :5 H2H else &egin Binario :5 HH; '0ile n  2 do &egin

i :5 i K (; tr8n mod ), s9; n :5 n div ); Binario :5 s K Binario; end; 6ecimalBinario :5 Binario; end; end; # F7rograma para converter o numero do sistema binario, dado como uma string, para o sistema decimalG program =onverteBinarioPm6ecimal; var 6ecimal : integer; Binario : string; ", c, n, r : integer; F>uncao que calcula potencias de )G .unction potencia6e)8e : integer9 : integer; var p, i : integer; &egin  p :5 (; .or i :5 ( to e do  p :5 )Ip;  potencia6e) :5 p; end; F7rograma principalG &egin 'riteln8H6igite o numero do sistema bin#rio H9; readln8Binario9; c :5 5engt08Binario9; 6ecimal :5 2; .or " :5 ( to c do &egin 6al8Binario\"], n, r9; 6ecimal :5 6ecimal K nIpotencia6e)8c ? "9; end; 'riteln8Binario, H no sistema decimal: H, 6ecimal9; end. $ F>uncao para verificar se uma conta dada nao foi digitada incorretamenteG .unction Eerifica=onta8 s : string9 : &oolean; t4pe 'Eetor 5 arra4\(..)2] o. &4te; var c : integer; 6igito : string; F7rocedimento para armazenar os digitos da contaG procedure Armazena6igitos8var s : string; var d : 'Eetor; t : integer9; var ", r : integer; &egin .or " :5 ( to t do 6al8s\"], d\"], r9; end; F>uncao para determinar o digito verificadorG Function 6igitoEerificador8s : string9 : integer; var i, =omp, uncao que retorna a ultima palavra de um te$toG .unction Jlt7alavra8s : string9 : string; var i, c : integer; Jlt7al : string; &egin c :5 5engt08s9; Jlt7al :5 HH; i :5 c; '0ile 8s\i] S H H9 and 8i  29 do &egin Jlt7al :5 s\i] K Jlt7al; i :5 i ? (; end; Jlt7alavra :5 Jlt7al; end; F7rograma principalG &egin 'riteln8H6igite o nome do passageiroH9;

readln8Nome9; 3dentificacao :5 Jlt7alavra8Nome9 K HCH K 7rim7alavra8Nome9; 'riteln83dentificacao9; end. * F7rograma para converter um nome proprio para o formato de referencia bibliograficaG program *eferenciaBibliografica var Nome, *eferencia : string; F>uncao que retorna uma palavra de um te$to a partir de uma posicao dadaG .unction 7alavra8s : string; p : integer9 : string; var c : integer; 7al : string; &egin c :5 5engt08s9; 7al :5 HH; '0ile 8s\p] S H H9 and 8p S5 c9 do &egin 7al :5 7al K s\p];  p :5 p K (; end; 7alavra :5 7al; end; F>uncao para deteccao de particulas de, do, dos, da, das, eG .unction 7articula8s : string; i : integer9 : &oolean; var p : string; &egin 7articula :5 false;  p :5 7alavra8s, i K (9; i.  8p 5 HeH9 or 8p 5 HdeH9 or 8p 5 HdoH9 or 8p 5 HdaH9 or 8p 5 HdasH9 or 8p 5 HdosH9 t0en 7articula :5 true; end; F>uncao que retorna as iniciais dos nomes e sobrenomesG .unction 7rimOetras8s : string9 : string; var i, c : integer; 7rimOet : string; &egin c :5 5engt08s9; 7rimOet :5 s\(]; .or i :5 ) to c do i.  8s\i] 5 H H9 and 8s\i K (] S H H9 and 8not 7articula8s, i99 t0en 7rimOet :5 7rimOet K H. H K s\i K (]; c :5 5engt087rimOet9; 7elete 87rimOet, c ? (, )9; 7rimOetras :5 7rimOet; end; F>uncao que retorna a ultima palavra de um te$toG .unction Jlt7alavra8s : string9 : string; var i, c : integer; Jlt7al : string; &egin c :5 5engt08s9; Jlt7al :5 HH; i :5 c; '0ile 8s\i] S H H9 and 8i  29 do &egin Jlt7al :5 s\i] K Jlt7al; i :5 i ? (; end; Jlt7alavra :5 Jlt7al; end; F7rograma principalG &egin 'riteln8H6igite o nome do autorH9; readln8Nome9; *eferencia :5 Jlt7alavra8Nome9 K H, H K 7rimOetras8Nome9; 'riteln8*eferencia9; end.

Capítulo * ! F7rograma para reunir dois arquivosG t4pe '*egistro 5 record at : string\(2];  Nome : string\2]; end; 'Arquivo 5 .ile o.  '*egistro; var a, a(, a) : 'Arquivo; *eg : '*egistro;  Narq(, Narq), Narq : string\()]; F>uncao que verifica a e$istencia e um arquivoG .unction P$isteArquivo8var f : 'Arquivo9: &oolean; &egin FZ3?G Reset8f9; i. I8Result  5 2 t0en P$isteArquivo :5 true else P$isteArquivo :5 false; FZ3KG end; F>uncao que verifica se uma matricula "# esta cadastradaG

.unction =onsulta8var f : 'Arquivo; at : string9 : integer; var r : '*egistro; &egin Reset8f9; read8f, r9; '0ile 8not Eo. 8f99 and 8r.at S at9 do read8f, r9; i.  r.at 5 at t0en =onsulta :5 FilePos8f9 V ( else =onsulta :5 ?(; end; F7rocedimento que reune dois arquivosG procedure *eunArq8var f(, f), f : 'Arquivo9; var r : '*egistro; &egin Reset8f(9; Re'rite8f9; '0ile not Eo. 8f(9 do &egin read8f(, r9; 'rite8f, r9; end; Reset8f)9; '0ile not Eo. 8f)9 do &egin read8f), r9; i.  =onsulta8f, r.at9 5 ?( t0en 'rite8f, r9; end; Close8f(9; Close8f)9; Close8f9; end; F7rograma principalG &egin 'riteln8H6igite os nomes dos arquivos a serem reunidosH9; readln8Narq(9; readln8Narq)9; Assign8a(, Narq(9; i.  P$isteArquivo8a(9 t0en &egin Assign8a), Narq)9; i.  P$isteArquivo8a)9 t0en

&egin 'riteln8H6igite o nome do novo arquivoH9; readln8Narq9; Assign8a, Narq9; i. not P$isteArquivo8a9 t0en *eunArq8a(, a), a9; else 'riteln8HArquivo H, Narq, H "a e$isteH9; end else 'riteln8HArquivo H, Narq), H nao e$isteH9; end else 'riteln8HArquivo H, Narq(, H nao e $isteH9; end. " F7rograma para gerar um arquivo com salarios maiores que -222G t4pe '*egistro 5 record at : string\(2];
View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF