Sie sind auf Seite 1von 6

Necessrio entender que haver somatrios a serem feitos dentro do programa.

Todas
as variveis que armazenaro as somas devem ser inicializadas com zero, porque o
nmero neutro da soma. Quando se tratar de uma multiplicao, as variveis sero
inicializadas com 1, pois este o elemento neutro da multiplicao.

>>Questo 1

So lidos vrias idades, at que uma delas seja zero. Partindo da, vemos que precisaremos de
uma estrutura de repetio (repeat) e que leremos as variveis dentro dela.
Como precisamos calcular a mdia, sempre que o usurio digitar uma idade(em idade), esta
ser lida e adicionada a soma de todas as idades digitadas(em soma).
A mdia justamente a soma dos termos dividido pela quantidade de termos, ento alm da
varivel que conter a soma, ser preciso um contador que marque quantas vezes o usurio
digitou.
Tendo esses dois valores, basta aplicar a frmula da mdia.

****CODIGO****
Program prog1;
Var soma, idade, contador: integer;

Begin
contador:=0;
soma:=0;

repeat
writeln('Digite uma idade. Para parar digite 0.');
readln(idade);

soma:= soma + idade;

contador := contador + 1;

writeln('Idade computada');

until(idade = 0);

writeln('Foram lidas ', contador , 'idades. A mdia entre elas ', (soma/contador) );
End.

>>Questo 2

Temos uma frmula que ser utilizada vrias vezes, no caso quando os valores forem de 50 a
150.
Como so vrias vezes, usaremos a estrutura de repetio, dessa vez while.(poderia ser o
repeat tambm)
Dentro da repetio, aplicaremos a frmula a cada valor possvel. Primeiro por 50, e a cada
iterao adicionando uma unidade a esse valor at que atinja 150.

****CODIGO****
Program prog2;
Var grausC, grausF: real;

Begin
grausF:=50;
writeln('Graus Farenheit

Graus Celsius');

while grausF <= 150 do


begin
grausC:= (5/9)*(grausF-32);
writeln(grausF:9, grausF:29:2);
grausF:=grausF+1;
end;
End.

>>Questo 3

Ser feito o teste em todos os nmeros de 4 algarismos, que compreendem de 1000 a 9999.
Isso nos leva a utilizao de uma estrutura de repetio que percorra esses valores.
Cada nmero passar por um processo de separao de algarismos como no exemplo. Para
separar os dois primeiros, realiza uma diviso por 100 onde s interessa a parte inteira do
resultado, o que pode ser obtido pela operao DIV. Os dois ltimos so obtidos pela diviso
por 100 onde se interessa o resto da diviso, que pode ser obtido pela operao MOD.
O clculo a seguir o quadrado da soma dessas duas parcelas, como feito no exemplo.
Por ltimo, analisa se esse clculo igual ao nmero original. Caso seja verdadeiro, basta
imprimir.

****CODIGO****
Program prog3;
Var num, parcela1, parcela2, conta: integer;

Begin
num:=1000;
writeln('Os nmeros de quatro algarismos que so: ');

while num <= 9999 do


begin
parcela1 := num div 100;
parcela2 := num mod 100;
conta:= (parcela1+parcela2)*(parcela1+parcela2);

if num=conta then
writeln(inicio:4, ', ');

num:=num+1;
end;
End.

>>Questo 4

Esse longo... =p
Diferente dos anteriores, esse s necessrio interagir uma vez com o usurio. O nico dado
que ele ir informar a potncia de e.
Tendo esse nmero em mos. Temos que calcular a exponenciao do nmero atravs da
funo EXP() que j existe no Pascal.
Inicializei algumas variveis de acordo com a observao no comeo deste arquivo, mas a
varivel diferenca eu coloquei um valor aleatrio acima de 0.0001.
Enquanto a diferena for maior que 0.0001, eu calculo os termos. Os termos so compostos
pela potncia(x^2) e o fatorial, ao encontr-los basta dividi-los e acrescent-los ao somatrio da
srie.
No podemos esquecer de incrementar a varivel i que serve como contador de iteraes e o
valor da seguinte multiplicao no fatorial, e tambm a verificar a diferena entre a exponencial
calculada e a srie.
Ao final, apresentar os valores requisitados na questo.

****CODIGO****
Program prog4;

Var num, i: Integer;


diferenca: real;
potencia, fatorial, e, serie: double;

Begin

writeln('Digite a potncia de e: ');


readln(num);

e:= exp(num);

serie:=1;
i:=1;

fatorial:=1;
diferenca:=3;
potencia:=1;

while diferenca >= 0.0001 do


begin
potencia:= potencia*num;
fatorial:= fatorial*i;
serie:= serie + potencia/fatorial;

diferenca:= abs(e-serie);
i:=i+1;
end;

writeln('Valor de x: ', num);


writeln('Nmero de iteraes: ', i);
writeln('Valor calculado pela srie: ', serie:3:7);
writeln('Valor calculado por EXP: ', e:3:7);

End.

>>Questo 5

Bom, nessa questo eu fiz com os 100 primeiros nmeros inteiros. Assim, eu fao com que a
estrutura de repetio percorra de 1 a 100. Qualquer mudana possvel depois.
Novamente haver um somatrio, porm este tem uma condio, ele s soma os divisores.
Ento, usa-se outra estrutura de repetio para percorrer os valores de 1 at o nmero.
Se for um divisor, ou seja, se o nmero for dividido e o resto for zero, some-os. Ao final, se a
soma for igual ao nmero inicial, um nmero perfeito.

****CODIGO****

Program prog5;

var x, soma, i: integer;

begin
x:=0;

writeln('Numeros perfeitos (1~100): ');

repeat
x:=x+1;
soma:=0;

for i:= 1 to x-1 do


begin
if x mod i = 0 then soma:=soma + i;
end;

if soma = x then
begin
writeln(x);
end;

until (x > 100);


End.

Das könnte Ihnen auch gefallen