Buscar

Intercalção de 2 vetores (resolução) - Pascal

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

program EP02;
type vetor1=array[1..20] of integer;
 vetor2=array[1..40] of integer;
{sub-rotina de Ordena‡Æo}
procedure Ordena(var a:vetor1; n:integer);
var i,j,aux:integer;
begin
 for i:=1 to n-1 do
 for j:=i+1 to n do
 if a[i] > a[j] then begin
 aux:=a[j];
 a[j]:=a[i];
 a[i]:=aux;
 end;
end;
{Sub-rotina de intercala‡Æo}
procedure IntercalaVetor(var a,b:vetor1; m,n:integer;
 var c:vetor2; var k:integer);
var i,j:integer;
begin
 i:=1;
 j:=1;
 k:=1;
 while (i<=m) and (j<=n) do begin
 if a[i] < b[j] then begin
 c[k]:=a[i];
 i:=i+1;
 end
 else if a[i] = b[j] then begin
 c[k]:=a[i];
 i:=i+1;
 j:=j+1;
 end
 else begin
 c[k]:=b[j];
 j:=j+1;
 end;
 k:=k+1;
 end;
 while j<=n do begin
 c[k]:=b[j];
 k:=k+1;
 j:=j+1;
 end;
 while i<=m do begin
 c[k]:=a[i];
 k:=k+1;
 i:=i+1;
 end;
 k:=k-1;
end;
{Programa Principal}
var a,b:vetor1;
 c:vetor2;
 m,n,i,k:integer;
begin
 write('m: ');
 readln(m);
 for i:=1 to m do begin
 write('a[',i,']: ');
 readln(a[i]);
 end;
 write('n: ');
 readln(n);
 for i:=1 to n do begin
 write('b[',i,']: ');
 readln(b[i]);
 end;
 readln;
 for i:=1 to m do
 write('A[',i,']:',a[i],' ');
 readln;
 for i:=1 to n do
 write('B[',i,']:',b[i],' ');
 readln;
 Ordena(a,m);
 Ordena(b,n);
 writeln;
 for i:=1 to m do
 write('A[',i,']:',a[i],' ');
 readln;
 for i:=1 to n do
 write('B[',i,']:',b[i],' ');
 readln;
 writeln;
 IntercalaVetor(a,b,m,n,c,k);
 for i:=1 to k do
 write('C[',i,']:',c[i],' ');
 readln;
end.

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Continue navegando

Outros materiais