Vous êtes sur la page 1sur 27

1) Efetue a leitura de um nmero inteiro positivo ou negativo,

e apresente o mdulo desse numero.



program exercicio_1;
uses crt;
var
Num, Result: integer;
begin
clrscr;
writeln('Digite um numero:'); readln(Num);
if (Num<0) then
writeln('Esse numero negativo')
else
writeln ('Esse numero positivo');
begin
Result:=Num*(-1);
end;
Result:=Num;
writeln('O modulo desse numero :',Result);
end.








2) Efetue a leitura de 4 nmeros inteiros, e apresentar os
nmeros que so divisveis por 2 e por 3.

program Exercicio_2;
uses crt;
var num1, num2, num3, num4: integer;
begin
clrscr;
write('Informe o primeiro valor: '); readln(num1);
write('Informe o segundo valor.: '); readln(num2);
write('Informe o terceiro valor: '); readln(num3);
write('Informe o quarto valor: '); readln(num4);
writeln;
if (((num1 mod 2) = 0) or ((num1 mod 3) = 0))
then writeln(num1, ' eh divisivel por 2 ou 3.');
if (((num2 mod 2) = 0) or ((num2 mod 3) = 0))
then writeln(num2, ' eh divisivel por 2 ou 3.');
if (((num3 mod 2) = 0) or ((num3 mod 3) = 0))
then writeln(num3, ' eh divisivel por 2 ou 3.');
if (((num4 mod 2) = 0) or ((num4 mod 3) = 0))
then writeln(num4, ' eh divisivel por 2 ou 3.');
readkey;
end.





3) Crie uma matriz de 10 posies do tipo inteiro, solicite ao
usurio o preenchimento da mesma. Aps o preenchimento
apresenta o maior e o menor valor existente na matriz.

Program Exercicio_3;
uses crt;
var
matriz : ARRAY [1..10] of integer;
a, b, menor, maior : integer;
Begin
for a := 1 to 10 do
begin
write('Insira um valor: '); readln(matriz[a]);
end;
for a := 1 to 10 do
if matriz[a] > maior then
maior := matriz[a];
menor := maior;
for b := 10 downto 1 do
if matriz[b] < menor then
menor := matriz[b];
writeln('O maior numero e: ', maior);
writeln('O menor numero e: ', menor);
End.





4) Crie uma matriz A de 20 posies do tipo inteiro, e uma
outra matriz B de tamanho 5 tambm do tipo inteiro.
Solicite ao usurio o preenchimento da matriz A. Somente
aps o preenchimento dessa matriz calcule a mdia dos
valores digitados. De posse dessa mdia procure na matriz
A 5 valores menores do que essa mdia e os insira na
matriz B. Ao final apresenta a matriz A e B.

program exerccio_4 ;
uses crt;
var
vet1: array [1..20] of integer;
vet2: array [1..5] of integer;
a,b: integer;
media:real;
begin
writeln('digite 20 numeros: ');
for a:=1 to 20 do
begin
writeln('numero [',a,']');
readln(vet1[a]);
end;
media:=0;
for a:=1 to 20 do
begin
media:= media+vet1[a];
end;
writeln('a media eh: ',media);
readkey;
media:= media/20;
writeln('a media eh: ',media);
readkey;
b:=1;
for a:=1 to 20 do
begin
if (vet1[a]<media) then
begin
if(b<=5)then
begin
vet2[b]:=vet1[a];
b:= b+1;
end;
end;
writeln(' vetor A [',a,']',vet1[a]) ;
end;
for b:=1 to 5 do
writeln('O vetor B [',b,'] ',vet2[b]);
readkey;
end.













5) Crie uma matriz bidimensional do tipo caractere (15x2), onde
voc dever armazenar 15 informaes sobre pessoas, essas
informaes so nome e endereo. Faa um programa que fornea
esse armazenamento, e aps o armazenamento dessas
informaes, construa uma rotina que permita ao usurio fazer
uma pesquisa por nome dentro dessa matriz, sendo que o
programa ir solicitar ao usurio um nome qualquer e dever ser
procurado dentro dessa matriz, caso for encontrado exibir o nome
e endereo encontrado, caso no seja encontrado informar ao
usurio que a pessoa no existe e verificar se o usurio deseja
fazer outra pesquisa. (Utilizar pesquisa Sequencial)

program exerccio_5 ;
uses crt;
var m: Array[1..15,1..2] of string;
aux: array[1..1,1..1] of string;
a,b,c,d: integer;
nome, resposta :string;
y: boolean;
begin
writeln('informaes da pessoa: ');
for a:= 1 to 15 do
for b:= 1 to 2 do
begin
if (b=1) then
begin
writeln('digite o nome');
readln(m[a,b]);
end
else
begin
writeln('digite endereo');
readln(m[a,b]);
end;
end;
repeat
Writeln('Qual nome deseja pesquisar?');
readln(name);
y:=false;
a:=1;
while (a<=15) and (y=false) do
if (name=m[a,1]) then
begin
y:=true;
end
else
begin
a:=a+1;
end;
if(y=true) then
begin
writeln('name: ',m[a,1]);
writeln('endereco: ',m[a,2]);
resposta:='nao'
end
else
begin
writeln('nome n existente');
writeln('Pesquisar novamente, sim ou nao?');
readln(resposta);
end;
until resposta='nao';
end.

6. Altere o Exercicio 5 de tal forma que no possa existir nomes
repetidos, e faa a pesquisa tendo como base esse vetor
classificado.
Program exercicio_6 ;
var
vetor: array [1..15, 1..2] of string;
a,b: integer;
pesquisa: string;
resp1,resp2: string;
Begin
for b:=1 to 14 do
Begin
Write('Digite o nome da pessoa[',b,']: ');
readln(vetor[1,b]);
Write('Digite o endereco da pessoa[',b,']: ');
readln(vetor[2,b]);
repeat
for a:=b downto 1 do
begin
if vetor[1,b] = vetor[1,a] then
begin
Writeln('O nome ja existe!');
end;
end;
until(vetor[1,b] <> vetor[1,a]);
end;
repeat
repeat
writeln('Quer realizar uma pesquisa de nomes?'); readln(resp);
until((resp='sim') or (resp='Sim') or (resp='Nao') or (resp='nao'));
If (resp='sim') or (resp='Sim') then
Begin
write('Digite um nome para pesquisar ');
readln(pesquisa);
for b:=1 to 15 do
begin
if pesquisa=vetor[1,b] then
begin
writeln(' encontrado o nome na poiscao [',a,',',b,']: ',
vetor[1,b]);
writeln(' encontrado o endereco na posicao ',a,',',b,']:
',vetor[2,b]);
end
else
Writeln('Nenhum nome foi encontrado [',b,'].');
end;
end;
if (resp='nao') or (resp='Nao') then
write('Pressione ENTER tecla para finalizar');
writeln;
Until((resp='Nao') or (resp='nao'));
End.

7) Resolva o Exercicio 5 utilizando pesquisa binria:

program exerccio_7;
uses crt;
var m: Array[1..15,1..3] of string;
aux: array[1..1,1..1] of string;
a,b,com,me,endi: integer;
nome,resp:string;
y: boolean;
begin
writeln('digite as informaes da pessoa:,');
for a:= 1 to 15 do
for b:= 1 to 2 do
begin
if (b=1) then
begin
writeln('digite o nome');
readln(m[a,b]);
writeln('digite endereo');
readln(m[a,b]);
end;
end;
for a:=1 to 14 do
for b:=a+1 to 15 do
begin
if (m[a,1]>m[b,1]) then
aux[1,1]:= m[a,1];
m[a,1]:= m[b,1];
m[b,1]:= aux[1,1];
aux[1,1]:= m[a,2];
m[a,2]:= m[j,2];
m[b,2]:= aux[1,1];
end;
y:=false;
while (y=false) do
begin
Writeln('Qual nome deseja pesquisar?');
readln(nome);
com:=1;
endi:=15;
y :=false;
while (com <=endi) and (y=false) do
begin
me:=(com+endi) div 2;
if(nome=m[me,1])then
begin
y :=true;
end
else
begin
if(nome<m[meio,1])then
endi :=meio-1
else
com:=me+1;
end;
end;
if(y=true) then
writeln('nome: ',m[me,1]);
writeln('endereco: ',m[me,2]);
end.




8) Crie uma matriz bidimensional do tipo caractere (20x3), onde
voc dever armazenar 20 informaes sobre endereo de uma
pessoa, essas informaes so nome, cidade e estado. Faa um
programa que fornea o armazenamento dessas informaes, e
aps esse armazenamento solicite para o usurio qual dos 3
campos ele quer que seja feito uma classificao alfabtica. Fazer
a classificao de acordo com o campo solicitado e apresentar
uma listagem dessa matriz classificada.

program exerccio_8 ;
uses crt;
var m: Array[1..20,1..3] of string;
aux: array[1..1] of string;
a,b: integer;
y: string;
Begin
Clrscr;
writeln('informe os dados da pessoa, digitando aqui');
for a:= 1 to 20 do
for b:= 1 to 3 do
begin
if (b=1) then
begin
writeln('digite o nome :');
readln(m[a,b]);
end
else
if (b=2) then
begin
writeln('digite a cidade');
readln(m[a,b]);
end
else
begin
writeln('digite estado');
readln(m[a,b]);
end;
end;
Writeln('Que campo deseja organizar?');
Writeln('A - Nome');
Writeln('B - Cidade');
Writeln('C - Estado');
readln(y);
if y='a' then
begin
for a:=1 to 19 do
for b:=a+1 to 20 do
begin
if (m[a,1]>m[b,1]) then
begin
aux[1,1]:= m[a,1];
m[a,1]:= m[b,1];
m[b,1]:= aux[1,1];
end;
end;
end;
if y='b' then
begin
for a:=1 to 19 do
for b:=a+1 to 20 do
begin
if (m[a,2]>m[b,2]) then
begin
aux[1,1]:= m[a,2];
m[a,2]:= m[b,2];
m[b,2]:= aux[1,1];
end;
end;
end;
if y='c' then
begin
for a:=1 to 19 do
for b:=a+1 to 20 do
begin
if (m[a,3]>m[b,3]) then
begin
aux[1,1]:= m[a,3];
m[a,3]:= m[b,3];
m[b,3]:= aux[1,1];
end;
end;
end;
for a:= 1 to 20 do
begin
for b:= 1 to 3 do
if b=1 then
begin
write('Nome:',m[a,b],' ');
end;
if b=2 then
begin
write('Cidade:',m[a,b],' ');
end;
if b=3 then
begin
write('Estado:',m[a,b],' ');
end;
writeln;
end;
end.





















9) Crie um programa que solicite do usurio uma frase de
tamanho mximo de 255 caracteres. Informe ao final da digitao
quantas palavras existem nesta frase.

program exerccio_9;
Uses crt;
Var frase,letra: string;
qtde, tam, x :integer;
Begin
clrscr;
qtde:=0;
Writeln('Mostre uma frase');
Readln (frase);
if tam <=255 then
begin
tam := length ;
for x := 1 to tam do
begin
letra := copy (frase,x,1);
if letra = ' 'then qtde := qtde + 1;
end;
qtde := qtde + 1;
end;
writeln ('a quantidade de palavras da frase = ',qtde);
readln;
end.


10) Crie um programa que solicite do usurio uma frase de
tamanho 255 caracteres. Informe ao final da digitao a
quantidade de ocorrncias que cada letra do alfabeto possui nesta
frase.
_
program exerccio_10;
uses crt;
var frase,letra: string;
letras:array[1..26] of string;
rep: array[1..26] of integer;
qtde, tam1, i, j, achou: integer;
begin
clrscr;
for i := 1 to 26 do
rep[i] := 0;
for i := 1 to 26 do
letras[i] := '';
writeln ('Digite uma frase ');
readln(frase);
tam1 := length (frase);
qtde:=0;
achou:=0;
for i := 1 to tam1 do
begin
letra := COPY(frase,i,1);
IF letra <> ' ' then
begin
IF qtde <> 0 then
begin
for := 1 to qtde do
begin
if letras[j] = letra then
achou:= 1;
end;
end;
IF achou = 0 then
begin
achou:=1;
for j := i+1 TO tam1 DO
begin
if letra = copy (frase,j,1)
then achou:=achou + 1;
end;
if achou > 1 then
begin
qtde:=qtde+1;
letras[qtde] := letra;
rep[qtde]:= achou;
end;
end;
end;
achou:=0;
end;
for i := 1 to qtde do
begin
writeln('A letra ', LETRAS[i], ' apareceu ', rep[i],' vezes');
end;
if qtde = 0 then
writeln('Nenhuma letra foi repetida');
readln;
end.

























11) Crie um programa onde o usurio ira fornecer um numero no
formato binrio de no mximo 16 bits e apresente esse valor
convertido para o valor decimal.

Program exerccio_11 ;
var
bin:string;
x,exp,tamanho:integer;
decimal:real;
Begin
repeat
write (Digite um n binrio ');
read (bin);
tamanho:=length(bin);
until (tamanho <=16);
for x:=tam downto 1 do
begin
if bin[x]='1' then
decimal:=decimal+(exp (exp*x (2)));
exp:=exp+1;
end;
writeln ('O n binrio ',bin,' igual a ',decimal:0:0,' decimal');
end.





12) Crie uma subrotina de criptografia que dever criptografar
uma palavra informada pelo usurio da seguinte forma: A palavra
criptografada dever ser obtida atravs de um descolamento das
letras em relao tabela ASCII do computador em 5 posies.
EX:
Entrada: TESTE
Sada: YJXYJ
program exerccio_12;
uses crt;
var
frase, nova, crip:string;
letra, letra2:string;
K:char;
tam,c,num: integer;
begin
clrscr;
crip:=;
writeln ('escreva um nome');
readln(frase);
nova:='';
for c:=1 to length(frase) do
nova:= nova+upcase(frase[c]);
tam:=length;
c:=1;
while c <= length(nova) do
begin
letra:=copy(nova,c,1);
if letra = 'X'
then letra2:='a';
if letra = 'y'
then letra2:='b';
if letra = 'z'
then letra2:=' c';
if letra <> ' '
Then begin
k:=letra[1];
num:=ord(k);
num:=num+5;
if (k = 'x') or (k = y') or (k = z') Then
begin
k:=letra2[1];
num:=ord(k);
end;
crip:=crip + CHR(num);
end;
if letra = ' '
then begin
crip:=crip + letra;
end;
c:=c+1;
end;
writeln('Frase est cripitografada');
writeln(crip);
readln;
end.


13) Crie um programa onde o usurio ir fornecer para um
funcionrio o cdigo do funcionrio, cargo, salrio e diferena
sobre a mdia salarial. Providenciar a entrada de 30 funcionrios
somente para os 3 primeiros campos, utilizando a criao de
tipos(RECORD). Aps o trmino da entrada calcular a mdia
salarial dentre os funcionrios cadastrados. Calcular a diferena
em percentual entre o salrio de cada funcionrio e a mdia
salarial obtida, gravar este percentual juntamente com o tipo
funcionrio que voc criou.

Program exercicio_13;
Uses crt;
var emp : array [1..30] of string;
x: integer;
m:real;
begin
m:=0;
writeln('informaes do funcionario');
for x:=1 to 30 do
begin
writeln('digite o cod do funcionario [',x,']:');
readln(emp[x].cod);
writeln('digite o cargo do funcionario [',x,']:');
readln(emp[x].cargo);
writeln('digite o salario do funcionario [',x,']:');
readln(emp[x].salario);
m:= m + emp[x].salario;
end;
m:= (m/3);
writeln('Media:',m);
writeln;
for x:=1 to 30 do
begin
writeln('cod do funcionario [',x,']:',emp[x].cod);
writeln('cargo do funcionario [',x,']:',emp[x].cargo);
writeln('salario do funcionario [',x,']:',emp[x].salario);
if m=emp[x].salario then
writeln('nao tem diferenca salarial')
else
begin
if m>=emp[x].salario then
begin
emp[x].difsal := m - emp[x].salario;
emp[x].difsal:= (emp[x].difsal*100)/m;
writeln('dif. salarial do funcionario [',x,']: -
',emp[x].difsal:0:2,'%');
end
else
begin
emp[x].difsal := emp[x].salario - m;
emp[x].difsal:= (emp[x].difsal*100)/m;
writeln('diferena. salarial do funcionario [',x,']:
1',emp[x].diferencasalariall:0:2,'%');
end;
end;
writeln;
end;
End.



14) Crie um programa usando sub-rotinas de tal forma que, o
programa principal dever ser um menu de opes para que o
usurio efetue as 4 operaes matemticas (+ - * /). Esse menu
dever apresentar as opes de 1 a 5, sendo 1 adio, 2
subtrao, 3 multiplicao, 4 diviso e 5 sair. Ao escolher
qualquer uma das opes acima o sistema dever chamar as
respectivas sub-rotinas solicitando ao usurio 2 nmeros e
apresentando a operao desejada com esses nmeros.

program exerccio_14;
uses crt;
var
opcao: char;
var
x, a, b: real;
Begin
clrscr;
opcao:='0';
while (opcao < '5') do Begin
clrscr;
writeln('Menu principal');
writeln('1 Soma');
writeln('2 Subtracao');
writeln('3 Multiplicacao');
writeln('4 Divisao');
writeln('5 Fim de programa');
writeln(' Escolha uma opcao ......: ');
readln(opcao);
Case opcao of
'1': rot_adicao;
'2': rot_subtracao;
'3': rot_multiplicacao;
'4': rot_divisao
Begin
clrscr;
writeln(' adio');
writeln('Entre um valor para A: ');
readln(a);
writeln('Entre um valor para b: ');
readln(b);
x:=a+b;
writeln('O resultado equivale a: ', x);
writeln('Pressione para voltar para o menu ');
readln;
end;
var
x, a, b: real;
Begin
clrscr;
writeln('Rotina de subtrao');
writeln('Entre um valor para A: '); readln(a);
writeln('Entre um valor para b: '); readln(b);
x:=a-b;
writeln('O resultado : ', x);
writeln('Pressione enter para voltar para o menu ');
readln;
end;
var
x, a, b: real;
Begin
clrscr;
writeln('Rotina de multiplicao');
writeln('Entre um valor para A: '); readln(a);
writeln('Entre um valor para b: '); readln(b);
x:=a*b;
writeln('O resultado equivale a: ', x);
writeln('Pressione para voltar para o menu ');
readln;
end;
var
x, a, b: real;
Begin
clrscr;
writeln('Rotina de diviso');
writeln('Entre um valor para A: '); readln(a);
writeln('Entre um valor para b: '); readln(b);
x:=a/b;
writeln('O resultado equivale a: ', x);
writeln('Pressione para voltar para o menu ');
readln;
end;
end.

Vous aimerez peut-être aussi