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.