Você está na página 1de 7

Exerccios Resolvidos

1. Dada uma seqncia de nmeros inteiros no-nulos, seguida por 0, imprimir seus
quadrados.
program CalculaQuadrado;
var
numero: integer;
/* usada para leitura da sequencia
*/
quadrado: integer;
/* guardara o quadrado do numero lido */
begin
writeln('');
writeln('
Calculo dos quadrados de uma sequencia de numeros');
writeln('');
write('Entre com uma sequencia de numeros inteiros nao-nulos, seguida por 0: ');
read(numero);
while (numero <> 0) do
begin
quadrado:= numero * numero;
writeln('O quadrado do numero ', numero, ': ',quadrado);
read(numero)
end
end.

4.

Dados um inteiro x e um inteiro no-negativo n, calcular x n.

program Potencias;
var
x,
n,
potencia,
contador: integer;
begin
writeln('');
writeln('
CALCULO DE POTENCIAS');
writeln('');
repeat
write('Entre com um numero inteiro e um natural: ');
read(x,n);
if n < 0 then writeln('O segundo numero deve ser natural!!')
until n >= 0;
potencia := 1;
contador := 0;
while(contador <> n) do
begin
potencia := potencia * x;
contador := contador + 1
end;
writeln ('O valor de ', x,' elevado a ', n,': ', potencia)
end.

6. Dados o nmero n de alunos de uma turma de Introduo aos Autmatos a Pilha (MAC
414) e suas notas da primeira prova, determinar a maior e a menor nota obtidas por essa
turma (Nota mxima = 100 e nota mnima = 0).

program Notas;
var
n, Nota, Contador, NotaMaior, NotaMenor: integer;
begin
writeln ('Entre com o numero de alunos: ');
read (n);
writeln ('Digite as notas(de 0 a 100) dos alunos: ');
Nota := 0;
Contador := 0;
NotaMaior := 0;
NotaMenor := 100;
repeat
read (Nota);
Contador := Contador+1;
if (NotaMaior < Nota) then NotaMaior := Nota;
if (NotaMenor > Nota) then NotaMenor := Nota
until Contador = n;
writeln ('A maior nota obtida foi: ',NotaMaior);
writeln ('A menor nota obtida foi: ',NotaMenor)
end.

8.

Dado um inteiro no-negativo n, determinar n!

program Fatorial;
var
n, x, Contador, fatorial:integer;
begin
writeln ('');
writeln ('
Calculo do fatorial de um numero');
writeln ('');
write ('Entre com um inteiro nao-negativo: ');
read (n);
fatorial := 1;
Contador := 1;
repeat
fatorial := fatorial*Contador;
Contador := Contador+1
until Contador > n;
writeln ('O valor de ',n,'!: ',fatorial);
end.

9. Dados n e dois nmeros inteiros positivos i e j diferentes de 0, imprimir em ordem


crescente os n primeiros naturais que so mltiplos de i ou de j e ou de ambos.
Exemplo: Para n = 6 , i = 2 e j = 3 a sada dever ser : 0,2,3,4,6,8.
program Multiplos;
var i, j, multi, multj, n: integer;
begin
readln(N, i, j);
multi := 0;
multj := 0;

while n <> 0 do
begin
if multi < multj
then begin
write(multi);
multi := multi + i
end
else if multj < multi
then begin
write(multj);
multj := multj + j
end
else begin
write(multi);
multi := multi + i;
multj := multj + j
end
n := n - 1
end

end.

12. Dados dois nmeros inteiros positivos, determinar o mximo divisor comum entre
eles usando o algoritmo de Euclides.
Exemplo:

program AlgoritmoDeMDC;
var a,b,r: integer;
begin
readLn(a, b);
write('MDC_(', a, ',', b, ')=_');
repeat
r:=a mob b;
a:=b;
b:=r
until r=0;
writeLn(a)
end.

14. Um matemtico italiano da idade mdia conseguiu modelar o ritmo de crescimento da


populao de coelhos (1) atravs de uma seqncia de nmeros naturais que passou a ser
conhecida como seqncia de Fibonacci (2). O n-simo nmero da seqncia de Fibonacci
Fn dado pela seguinte frmula de recorrncia:

Faa um programa que, dado n, calcula Fn.


program SequenciaFibonacci;
var
n, F1, F2, Funcao, Conta: integer;
begin
write ('Digite um numero n: ');
read (n);
Conta := 1;
F1 := 1;
F2 := 1;
Funcao := 0;
while (Conta <= n) do
begin
F1 := F2;
F2 := Funcao;
Funcao := F1+F2;
Conta := Conta+1
end;
writeln ('F de ',n,' = ',Funcao)
end.

15.

Dizemos que um nmero i congruente mdulo m a j se i % m = j % m.


Exemplo: 35 congruente mdulo 4 a 39, pois

35 % 4 = 3 = 39 % 4.
Dados inteiros positivos n, j e m, imprimir os n primeiros naturais congruentes a j
mdulo m.

program CongruenteMdulo;
var n, i, m, j : Integer;
begin
i=0;
readLn(n, m, j);
while n<>0 do
begin
if i mod m = j mod m
then begin
writeLn('Natural=',i);
n:=n-1
end;
i:=i+1
end
end.

16.

Dado um nmero natural na base binria, transform-lo para a base decimal.

Exemplo:
Dado 10010 a sada ser 18, pois 1. 2 4 + 0. 2 3 + 0. 2 2 + 1. 2 1 + 0. 2 0 = 18.

program 2p/10;
var num, pot2, final : Integer;
begin
readLn(Num);
final:=0;
pot2:=1;
while num<>0 do
begin
final:=(num mod 10)* pot2 +final;
num:=num div 10;
pot2:=pot2*2
end;
write(Final)
end.
17. Dado um nmero natural na base decimal, transform-lo para a base binria.
Exemplo: Dado 18 a sada dever ser 10010.

program BaseBinaria;

var
n,
{numero na base decimal}
Bin, {numero transformado para base 2}
q,
{dividendo}
d,
{divisor}
r,
{resto}
Pot: integer;
begin
write ('Digite um numero natural: ');
read (n);
q := n;
Bin := 0;
Pot := 1;
while q>0 do begin
d := q div 2;
r := q mod 2;
q := d;
Bin := Bin+(r*Pot);
Pot := Pot*10;
end;
writeln ('O numero ',n,' escrito na base binaria: ',Bin);
end.
18. Dados trs nmeros naturais, verificar se eles formam os lados de um tringulo
retngulo.
program triangulo;
var a, b, c, aux : Integer;
begin
readLn(a,b,c);
if b>a
then begin
aux:=a;

a:=b;
b:=aux
end;
if c>a
then begin
aux:=a;
a:=c;
c:=aux
end;
if (a*a)=(b*b) + (c*c)
then writeLn('o triangulo retangulo');
else writeLn('o triangulo no retangulo')
end.
19.

Dados trs nmeros, imprimi-los em ordem crescente.

program OrdemCrescente;
var
n1, n2, n3: integer;
begin
write ('Entre com tres numeros: ');
read (n1,n2,n3);
if n3>n1 then
begin
if n1>n2 then write ('A ordem crescente:
else if n2<n3 then write('A ordem
end;
if n1>n2 then
begin
if n2>n3 then write ('A ordem crescente:
else if n3<n1 then write('A ordem
end;
if n1<n2 then
begin
if n3<n1 then write ('A ordem crescente:
else if n3<n2 then write('A ordem
end;
end.

',n2,' ',n1,' ',n3)


crescente: ',n1,' ',n2,' ',n3);

',n3,' ',n2,' ',n1)


crescente: ',n2,' ',n3,' ',n1);

',n3,' ',n1,' ',n2)


crescente: ',n1,' ',n3,' ',n2);

21. (POLI 87) Dados n e uma seqncia de n nmeros inteiros, determinar quantos
segmentos de nmeros iguais consecutivos compem essa seqncia.
Exemplo: A seguinte seqncia formada por 5 segmentos de nmeros iguais:
5, 2,
2, 3, 4, 4, 4, 4, 1, 1
program ContaSegmentos;
var n, anterior, atual, cont, i : Integer;
begin
readLn(n);
readLn(anterior);
cont:=1;
for i:=2 to n do
begin
readLn(atual);
if atual <> anterior
then begin
cont:= cont+1;

anterior:=atual
end
end;
writeLn(cont)
end.

22. (POLI 89)


de um segmento
Exemplos:
Na seqncia
mximo 4.
Na seqncia

Dados n e uma seqncia de n nmeros inteiros, determinar o comprimento


crescente de comprimento mximo.
5,

10,

3,

2,

4,

7,

9,

8,

o comprimento do segmento crescente

10,

8,

7,

5,

o comprimento de um segmento crescente mximo 1.

program SegmentoCrescente;
var
n,
{numero de elementos da sequencia}
Seq,
{sequencia de numeros inteiros}
SeqAnt, {numero anterior da sequencia}
Comp,
{comprimento de um segmento}
CompMax, {comprimento do segmento maximo}
Conta: integer;
begin
write ('Entre com um numero: ');
read (n);
write ('Digite uma sequencia de ',n,' numeros inteiros: ');
Comp := 1;
SeqAnt := 0;
CompMax := 0;
for Conta:=1 to n do begin
read (Seq);
if Seq>SeqAnt then Comp := Comp+1
else Comp := 1;
if CompMax < Comp then CompMax := Comp;
SeqAnt := Seq
end;
writeln ('O comprimento do segmento crescente maximo: ',CompMax)
end.

Você também pode gostar