sexta-feira, 29 de maio de 2015

Programa em Pascal que ordena e intercala vetores

{
Curso        : Análise e Desenvolvimento de Sistemas
Turma        : Tarde
Professor    : Aka
Aluno        : Lucas
Matrícula    : 12200935 e
Data         : 30/11/2012

Programa     EP02.pas - Intercalação de Dois Vetores

Objetivo:    O programa deve receber números inteiros que são alocados em dois vetores e chamar um
             procedimento que intercala os dois vetores ordenados.

Descrição do Programa:
          Segue as seguintes instruções:

          1. Lê M e um vetor de inteiros com M elementos
          2. Lê N e outro vetor com N elementos
          3. Imprime os valores lidos
          4. Ordena os vetores
          5. Imprime os vetores após a ordenação
          6. Chama o procedimento de intercalação passando os seis parâmetros
}
program ep02;
type Vetor1 = array [1..20] of integer;
type Vetor2 = array [1..40] of integer;
procedure IntercalaVetor (var a,b: Vetor1; m,n: integer;
                          var c: Vetor2; k: integer);
var x,y,z: integer;
begin
x:=1;
y:=1;
z:=1;
while z<=k do
  begin
    if (a[x] < b[y]) and (x <= m) then
      begin
      c[z]:= a[x];
      x:= x+1;
      z:= z+1;
      end;
    if (a[x] > b[y]) and (y <= n) then
      begin
      c[z]:= b[y];
      y:= y+1;
      z:= z+1;
      end;
    if a[x] = b[y] then
      begin
      c[z]:= b[y];
      y:= y+1;
      z:= z+1;
      end;
    if x > m then
      begin
      c[z]:= b[y];
      y:= y+1;
      z:= z+1;
      end;
    if (x > m) and (y = n) then
      begin
      c[z]:= b[y];
      y:= y+1;
      z:= z+1;
      end;
    if y > n then
      begin
      c[z]:= a[x];
      x:= x+1;
      z:= z+1;
      end;
    if (y > n) and (x = m) then
      begin
      c[z]:= a[x];
      x:= x+1;
      z:= z+1;
      end;
  end;
end;
var a,b: Vetor1; c: Vetor2;
m,n,i,j,k,aux1,aux2: integer;
begin
write ('Insira m com valor máximo de 20: ');
readln (m);
for i:=1 to m do begin
  write ('Entre com a[',i,']');
  readln (a[i]);
end;
write ('Insira n com valor máximo de 20: ');
readln (n);
for j:=1 to n do begin
  write ('Entre com b[',j,']');
  readln (b[j]);
end;
i:=1;
j:=1;
writeln ('Valores de a: ');
for i:=1 to m do
  writeln (a[i]);
writeln ('Valores de b: ');
for j:=1 to n do
  writeln (b[j]);
i:=1;
j:=1;
for i:= 1 to m-1 do
  for j:= i+1 to m do
    if a[i] > a[j] then
      begin
        aux1:= a[j];
        a[j]:= a[i];
        a[i]:= aux1;
      end;
i:=1;
j:=1;
for i:=1 to n-1 do
  for j:= i+1 to n do
   if b[i] > b[j] then
     begin
       aux2:= b[j];
       b[j]:= b[i];
       b[i]:= aux2;
     end;
i:=1;
j:=1;
writeln ('Valores de a ordenados: ');
for i:=1 to m do
  writeln (a[i]);
writeln ('Valores de b ordenados: ');
for j:=1 to n do
  writeln (b[j]);
k:= m+n;
writeln ('Valores de c: ');
IntercalaVetor (a,b,m,n,c,k);
i:=1;
for i:=1 to k do
writeln (c[i]);
end.

Nenhum comentário:

Postar um comentário