Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Adrianled

[Resolvido] Gerar um vetor que seja intersecção

Recommended Posts

Escrever um algoritmo que leia 2 vetores com 10 elementos cada um e

os mostra. Considerando cada vetor como sendo um conjunto, crie um

terceiro vetor que seja a intersecção dos dois primeiros e o mostre.

 

como faço para separar apenas os valores iguais considerando a seguinte condição

sendo os valores dentro de colchetes o elemento

 

VetoA [1] [2] [3] [4] [5] [6] [7] [8] [9] [10]

 

VetoB [3] [2] [3] [7] [5] [7] [13] [12] [8] [7]

 

nesse caso reparem que ha valores que aparecem + de 2 vezes e sendo a intersecção apenas

os valores que tenho em ambos os conjuntos sem repetição, como resolver isso ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faça um loop p/ percorrer o primeiro vetor e um loop interno p/ ver se existe a primeira ocorrencia no segundo vetor. Se existir,copie p/ o outro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu sei q você não pediu união,soma,produto,diferença mais olha ai completo e no final tem intersecção flws

e ESTUDE MAIS. http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

 

#include <stdio.h>
#include <stdlib.h>

int main()
{
  // Declaracao de variaveis locais

	 int x[10],y[10],u[10],d[10],s[10],p[10],it[10];
	 int i,j,k,cont_u,cont_d,cont_i;

  // Leitura dos vetores X,Y
	 for(i=0;i<10;i++){
		 printf("x[%i]:",i+1);
		 scanf("%i",&x[i]);
	 }	
	 for(i=0;i<10;i++){
		 printf("y[%i]:",i+1);
		 scanf("%i",&y[i]);
	 }
	 cont_u=0;
	 cont_i=0;
	 cont_d=0;
	 for(i=0;i<10;i++){
		 j=0;
		 while(j < cont_u && x[i]!= u[j]){
				j=j+1;
		 }
		 if (j >= cont_u){
				u[cont_u] = x[i];
				cont_u=cont_u+1;
		 }
	 }			 
	 for(i=0;i<10;i++){
		 j=0;
		 while(j < cont_u && y[i]!= u[j]){
				j=j+1;
		 }
		 if(j >= cont_u){
			u[cont_u]=y[i];
			cont_u=cont_u+1;
		 }
	 }
	 printf("\nUNIAO:\n");
	 for(i=0;i<cont_u;i++){
		 printf(" %i ", u[i]);
	 }
	 for(i=0;i<10;i++){
		 j=0;
		 while(x[i]!= y[j] && j < 10){
				j=j+1;
		 }
		 if(j>=10){
				k=0;
				while(k <= cont_d && x[i]!= d[k]){
					 k=k+1;
				}
				if(k >= cont_d){
					 d[cont_d] = x[i];
					 cont_d = cont_d + 1;
				}
		 }
	 }
	 printf("\n DIFERENCA:\n ");
	 for(i=0;i<cont_d;i++){
		 printf(" %i ", d[i]);
	 }
	 for(i=0;i<10;i++){
		 s[i]=x[i]+y[i];
		 p[i]=x[i]*y[i];
	 }
	 printf("\nSOMA:\n");
	 for(i=0;i<10;i++){
		 printf(" %i " , s[i]);
	 }
	 printf("\nPRODUTO:\n");
	 for(i=0;i<10;i++){
		 printf(" %i " , p[i]);
	 }			
	 for (i=0;i<10;i++)
		{ 
			j = 0;
			while (j < 10 && x[i] != y[j])
			 { 
				  j++;
			 }
			if (j < 10)
				 {
					 k = 0;
					 while (k < cont_i && it[k] != x[i])
					 {
							k++;
					 }
					 if (k >= cont_i)
							{ it[cont_i] = x[i];
								cont_i++;
							}
					}
	 }
	 printf("\n INTERSECCAO: \n");
	 for(i=0;i<cont_i;i++){
		 printf(" %i ", it[i]);
	 }
	 printf("\n\n\n\n\n\n");
	 system("pause");
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.