Boa tarde amigos,
Estou com um problema que não acho o erro de jeito nenhum.
O programa em questão deve determinar a interseção de dois conjuntos de no máximo 100 elementos cada
Ja quebrei a cabeça mas não consigo encontrar o erro. O programa compila mas não imprime corretamente o vetor interseção
Segue o código:
{ Determina a interseção de dois conjuntos de, no máximo, 100 elementos cada }
Program Intersecao ;
type
Vetor = array [1..100] of real;
procedure DetermineConjuntoIntersecao ( n :integer; A :Vetor; m :integer; B :Vetor; { A,B : entrada: conjuntos fornecidos }
{ n,m: entrada: números de elementos dos conjuntos A e B }
var p :integer; var I :Vetor );{ I: saída: conjunto Interseção de A com B }
{ p: saída: apontador para o conjunto interseção }
var
y,k { auxiliares }
: integer;
Achou { encontrou um elemento da interseção }
: boolean;
begin
p := 0; { sinaliza conjunto Interseção vazio }
{y := 1;}
for y:=1 to n do
begin
k := 1;
Achou := false;
repeat { verifica se o elemento A[i] está em B }
if A[y] = B[k] then
begin
p := p + 1;
I [p] := A [y]; { armazena A[i] no conjunto interseção }
Achou := true;
end;
k := k + 1;
until (k > m) or (Achou);
end;
end;
{ Defina o tipo das variáveis }
var
m,n,p { números de elementos dos conjuntos }
: integer;
A,B { conjuntos fornecidos como entrada }
: Vetor;
I { conjunto interseção }
: Vetor;
j
: integer;
Begin
ClrScr;
writeLn( 'DETERMINA INTERSEÇÃO DE DOIS CONJUNTOS DE NO MÁXIMO 100 ELEMENTOS CADA' );
writeLn;
writeLn( '=====================================================' );
writeLn;
writeLn( 'Aluno: Valter Almeida Santos Júnior' );
writeLn( 'Matrícula: 2016007243' );
writeLn;
writeLn( '=====================================================' );
writeLn;
writeLn( 'Entre com o número de elementos do conjunto A' );
readLn( n );
{ Lê os elementos do conjunto A }
writeLn;
writeLn( 'Entre com os ', n, ' elementos do conjunto A' );
for j := 1 to n do
begin
write( 'A[', j, '] = ' );
readLn( A[j] );
end;
writeLn;
writeLn( 'Entre com o número de elementos do conjunto B' );
readLn( m );
{ Lê os elementos do conjunto B }
writeLn;
writeLn( 'Entre com os ', m, ' elementos do conjunto A' );
for j := 1 to m do
begin
write( 'B[', j, '] = ' );
readLn( B[j] );
end;
writeLn;
DetermineConjuntoIntersecao ( n, A, m, B, p, I );
writeLn;
for j := 1 to p do
writeLn( I [p]: );
readkey;
end.
Muito obrigado pela ajuda!!!