Ir ao conteúdo
  • Cadastre-se

Pascal - interseção de dois conjuntos


Posts recomendados

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!!!

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Olá.

Dei uma analisada no seu código e fiz o seguinte teste:

if A[y] = B[k] then
  begin
  p := p + 1;
  I [p] := A [y];               { armazena A[i] no conjunto interseção }
  Achou := true;
  writeln(I[p]); //<---TESTE
  end;

Pelo testes, está armazenado corretamente...

 

Se armazenou corretamente, advinha onde está o erro?
 

   for j:= 1 to p do
     writeLn(I[p]); //<---aqui deve usar o j!

 

Eu acho que é só isso!

Link para o comentário
Compartilhar em outros sites

9 horas atrás, Simon Viegas disse:

Se armazenou corretamente, advinha onde está o erro?
 


   for j:= 1 to p do
     writeLn(I[p]); //<---aqui deve usar o j!

 

Eu acho que é só isso!

 

E não é que era isso mesmo!!

 

Muito obrigado meu amigo!

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...