Soluções: Aula prática 10
Parte B.
6. Escreva um programa que faz
o desenho dum triângulo de Pascal com oito (8) linhas. Como se sabe,
este triângulo tem muitas propriedades interessantes para as matemáticas
e as estatísticas. Nele encontramos números primos, números
triangulares, a serie de Fibonacci, combinatória, etc.
{-----------------------------------------------------}
program Tpascal;
{programa que constroi o triângulo de Pascal com 8 linhas. Pode ser
adaptado
a qualquer tamanho. P.Serendero }
uses crt;
const max_col = 15;
max_lin = 8;
var centro: word;
a : array[1..max_lin, 1..max_col] of word;
{--------------------------------------------------------------------}
procedure limpar_array;
{procedimento que inicializa todo o arranjo com zeros }
var i,j : word;
begin
for i:= 1 to max_lin do
for j:= 1 to max_col do
a[i, j]:= 0;
end;
{------------------------------------------------------------------------}
function SomaDiag(lin, col: word):word;
{esta função calcula o valor a inserir numa posição,
que corresponde a
soma dos valores existentes nas diagonais da linha precedente }
begin
if (col+1 > max_col) then
SomaDiag:= a[lin-1, col-1]
else
SomaDiag:= a[lin-1, col-1] + a[lin-1,
col+1];
end;
{-------------------------------------------------------------------}
procedure imprimir;
{imprime o triangulo de Pascal. Cada posiçãoo que tem 0 ‚ impressa
como
um espaço livre. }
var lin, col, i : word;
begin
clrscr;
for i:= 1 to 3 do writeln;
for lin:= 1 to max_lin do
begin
write('
');
for col:= 1 to max_col
do
if (a[lin, col] = 0) then
write(' ')
else write(a[lin, col]);
writeln;
end;
end;
{----------------------------------------------------------------}
function centro_linha: word;
{inserir um 1 no centro do array correspondente a primeira linha }
begin
centro_linha:= (max_col div 2) + 1;
end;
{--------------------------------------------------------------------}
procedure constroi_triangulo(centro: integer);
{sen optimiza‡äes. Verifica todas as posições para construção
do triângulo}
var lin, col, inicio : word;
begin
a[1][centro]:= 1;
{no centro da primeira linha so um 1 }
for lin:= 2 to max_lin do {algoritmo
para as restantes linhas }
begin
centro:=
centro - 1;
for col:=
centro to max_col do
a[lin, col]:= SomaDiag(lin, col);
end;
end;
{--------------------------------------------------------------------}
begin
limpar_array;
centro:= centro_linha;
constroi_triangulo(centro);
imprimir;
readln;
end.
7.
Escreva um programa que guarda a informação sobre 10 elementos
a sua escolha da tabela periódica de elementos e que permita
a sua consulta. (actualmente esta tabela tem 103 elementos como sabe.)
Para fazer, crie um array de registos (“record”) em Pascal onde vai
armazenar toda a informação interessante para cada elemento:
Número, Nome, Símbolo, camadas, massa, ponto ebulição,
ponto de fusão, nome do(s) descobridor(es), etc. Escolha pelo
menos cinco informações distintas sobre cada elemento.
Lembre-se que cada tipo de dado distinto merece também um tipo
distinto em Pascal.
Uma vez carregada a tabela, faz uma função que quando
é dado o número do elemento, a função devolve
a posição (indice) na matriz onde está situado o
elemento. Isto pela sua vez permite a um outro procedimento mostrar os dados
armazenados no correspondente registo.
{--------------------------------------------------------------------------}
program tabelap;
Uses Crt;
type elemento = record
numero : integer;
nome : string[25];
simbolo : string[5];
camadas : real;
massa : real;
end;
var tabela: array[1..10] of elemento;
i : word; r: char;
{------------------------------------------}
procedure procura_mostra(n: integer);
begin
writeln(' Elemento
seleccionado: ');
writeln('numero : ',tabela[n].numero);
writeln('nome : ',tabela[n].nome);
writeln('simbolo: ',tabela[n].simbolo);
writeln('camadas: ',tabela[n].camadas:0:4);
writeln('massa : ',tabela[n].massa:0:4);
readln;
end;
{--------------------------------------------------------------}
procedure carrega_elemento(n:integer);
begin
writeln('Favor entrar os dados dum elemento: ');
write('numero : '); readln(tabela[n].numero);
write('nome : '); readln(tabela[n].nome);
write('simbolo: '); readln(tabela[n].simbolo);
write('camadas: '); readln(tabela[n].camadas);
write('massa : '); readln(tabela[n].massa);
end;
{---------------------------------------------------------------}
begin
clrscr;
for i:=1 to 10 do
carrega_elemento(i);
readln;
clrscr;
r:= 'x';
while (r <> 'n') do
begin
write('Qual
elemento quer ver? '); readln(i);
procura_mostra(i);
writeln;
write('Deseja continuar? '); readln(r);
end;
writeln('vocˆ decidiu terminar. Adeus.');
readln;
end.