Exercícios de revisão
• Faça um programa que preencha por leitura
um vetor de 50 posições inteiras e mostre o
seu maior e menor elemento e suas
respectivas posições.
program teste;
const NE = 50;
var I,maior,menor,Pmaior,Pmenor:integer;
vet:array[1..NE] of integer;
begin
writeln(' Informe o vetor');
for I:=1 to NE do readln(vet[I]);
maior:=vet[1];
menor:=vet[1];
Pmenor:=1;
Pmaior:=1;
for I:=1 to NE
do begin
if vet[I]>maior
then begin
maior:=vet[I];
Pmaior:=I;
end;
if vet[I] < menor
then begin
menor:=vet[I];
Pmenor:=I;
end;
end;
writeln;
writeln('O maior elemento eh ',maior,' na posicao ',Pmaior);
writeln('O menor elemento eh ',menor,' na posicao ',Pmenor);
readln;
end.
• Faça um programa que preencha por leitura
uma matriz 8x8 com números inteiros e
mostre uma mensagem dizendo se a matriz é
simétrica. Uma matriz é simétrica se
M[i,j]=M[j,i], para qualquer i e j
const NL = 8;
const NC = 8;
var
M:array [1..NL,1..NC] of integer;
I,J,simetrica:integer;
begin
{preenchimento da matriz}
writeln('informe a matriz');
for I:=1 to NL
do begin
writeln('linha ',I);
for J:=1 to NC do readln(M[i,j]);
end;
{verifica se e' simetrica}
simetrica:=1;
for I:=1 to NL
do for J:=1 to NC
do if M[I,J] <> M[J,I]
then simetrica:=0;
{mostra a matriz e a simetria}
writeln;
for I:=1 to NL
do begin
writeln;
for J:=1 to NC do write(M[i,j]:3);
end;
writeln;
if simetrica=1
then writeln('a matriz eh simetrica')
else writeln('a matriz nao eh simetrica');
readln;
end.
• Faça uma função que receba dois números
inteiros positivos por parâmetro e forneça
como saída a soma dos N números inteiros
existentes entre eles. Faça um programa que
use a função.
{definição da função}
function somaInt(n1,n2:integer):integer;
var I,aux:integer;
begin
somaint:=0;
if n1>n2
then begin
aux:=n1;
n1:=n2;
n2:=aux;
end;
for I:=n1+1 to n2-1
do somaint:=somaint+I;
end;
{programa principal}
var A,B:integer;
begin
writeln('informe dois numeros inteiros');
readln(A,B);
writeln('a soma dos inteiros entre eles eh: ',somaint(A,B));
readln;
end.
• Faça um programa Pascal que preencha por
leitura dois vetores, com 5 números inteiros
diferentes cada um. Calcule e mostre o
seguinte vetor resultante:
– a união de X com Y (todos os elementos de X e Y,
sem repetições)
Exemplo de solução
const TV = 5;
var
I,J,K,jatem:integer;
X,Y:array [1..TV] of integer;
UNIAO: array [1..10] of integer;
Begin
{leitura dos vetores}
writeln('informe o vetor X sem valores repetidos');
for I:=1 to TV
do readln(X[I]);
writeln('informe o vetor Y sem valores repetidos');
for I:=1 to TV
do readln(Y[I]);
{calcula o vetor UNIAO}
for I:=1 to TV do UNIAO[I]:=X[I];
K:=TV;
for I:=1 to TV {para percorrer o vetor Y}
do begin
jatem:=0;
for J:=1 to TV do {para percorrer o vetor X}
if Y[I]=X[J] then jatem:=1;
if jatem=0
then begin
K:=K+1;
UNIAO[K]:=Y[I];
end;
end;
{mostra vetor UNIAO}
writeln('vetor UNIAO:');
for I:=1 to K do writeln(UNIAO[I]:3);
readln;
end.
• Faça um programa que preencha por leitura
uma matriz 10x20 e informe a coluna com a
maior soma e o valor da soma.
Program teste;
const NL=10;
NC=20;
Var mat:array[1..NL,1..NC] of integer;
I,K,soma,maiorsoma,col:integer;
Begin
writeln('informe a matriz');
writeln;
for I:=1 to NL
do for K:=1 to NC
do begin
write('posicao ',I,', ',K,': ');
readln(mat[I,K]);
end;
maiorsoma:=mat[1,1];
col:=1;
for K:=1 to NC
do begin
soma:=0;
for I:=1 to NL
do soma:=soma+mat[I,K];
if soma > maiorsoma
then begin
maiorsoma:=soma;
col:=K;
end;
end;
writeln;
writeln('a maior soma eh ', maiorsoma,' na coluna ',col );
readln;
End.
• Faça um programa que mostre os 4 primeiros
números perfeitos. Para saber se um número é
perfeito ou não utilize uma função.
Sabe-se que um número perfeito é aquele em que a
soma dos seus divisores positivos, exceto o próprio, é
igual a ele mesmo.
Exemplos: 6 (1+2+3) e 28 (1+2+4+7+14).
Program FuncaoNroPerfeito;
{definição da função}
function nroPerfeito(N:integer):char;
Var
I,soma:integer;
begin
soma:=0;
for I:=1 to N-1
do if N mod I = 0 then soma:=soma+I;
if soma=N
then nroPerfeito:='S'
else nroPerfeito:='N';
end;
{programa principal}
var I,cont:integer;
begin
I:=1;
cont:=0;
repeat
if nroPerfeito(I)='S'
then begin
writeln(' o numero ', I, ' eh perfeito');
cont:=cont+1;
end;
I:=I+1;
until cont>=4;
readln;
end.
Desafio!
• Faça um programa que preencha por leitura
um vetor com 10 nomes. Ordene os
elementos do vetor em ordem alfabética.
Mostre os elementos do vetor após a
classificação.
const TV = 10; {Tamanho do Vetor}
var
I,J:integer; aux:string;
X:array [1..TV] of string;
begin
writeln('informe os nomes');
for I:=1 to TV
do readln(X[I]);
{classifica o vetor}
for I:=1 to TV do
for J:=1 to TV - 1 do
if X[J]>X[J+1]
then begin
aux:=X[J];
X[J]:=X[J+1];
X[J+1]:=aux;
end;
{mostra o vetor ordenado}
writeln('vetor classificado em ordem alfabetica:');
for I:=1 to TV do writeln(X[I]);
readln;
end.
Download

Exercícios de revisão