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.