elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía rápida para descarga de herramientas gratuitas de seguridad y desinfección


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Intersección de dos vectores
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Intersección de dos vectores  (Leído 3,568 veces)
tokyo13

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Intersección de dos vectores
« en: 29 Junio 2019, 16:53 pm »

Estoy aprendiendo c++ y no consigo hacer la intersección de dos vectores que ya tengo. Alguien me puede echar una mano?
Ty
Código:
void interseccionNoOrdenado(int vector1[], int medida1, int vector2[], int medida2, int vectorResult[], int& medidaResult)
{
     //inicializamos vectorResult
    for(int i = 0; i <= medida1; i++){
        vectorResult[i] = vector1[i];
    }
    midaResult = medida1;
   
    //ordenamos vector2
   
    int tmp;
    for(int i = 0; i <= (medida2-1); i++){
        for(int j = 0; j <= medida2-i-1; j++){
            if(vector2[j] >= vector2[j+1]){
                tmp = vector2[j];
                vector2[j] = vector2[j+1];
                vector2[j+1] = tmp;
            }
        }
    }
   
    //buscamos valores comunes de vector2 y vectorResultat
    for(int i = 0; i <= medida1; i++){
        if(!buscaElemento(vector2, medida2, vectorResult[i])){ //función devuelve si un num está en un vector
            eliminaElemento(vectorResult, medidaResult, i);//elimina elemento y lo desplaza todo derecha
            medidaResult--;
            i--;
        }
    }


En línea

@XSStringManolo
Hacker/Programador
Colaborador
***
Desconectado Desconectado

Mensajes: 2.397


Turn off the red ligth


Ver Perfil WWW
Re: Intersección de dos vectores
« Respuesta #1 en: 29 Junio 2019, 19:28 pm »

Para que vas a usar el programa?
Hay otros formas de recorrer un vector y buscar elementos en él.
int i = 0;
for (auto iter = MiVector.begin(); iter != MiVector.end(); ++iter)
{
i++
   if (*iter == 2)
   {
    cout << "Encontrado el numero 2 en la posición [" <<i-1 << "] del vector." <<endl;
   }
}

for (auto& numero : MiVector)
{
 if (numero == 2)
 {
 cout.... numero;
 }
}

for (MiVector::iterator encontrado = find(miVector.begin(), miVector.end(), 2)
if (encontrado != miVector.end())
{
cout...  *encontrado;
}

No teniendo para que tanta complicación de código.
Recorres uno de los vectores y compruebas si los elementos estan el otro.
int i = 0;
for (iter vector1; iter != 10000; ++iter)
{
 if (*iter == vector2)
 {
 //encontrado elemento comun
 }
 
 if (iter == vector1.end())
 {
  iter = vector1.begin();
 }

 if (i==vector2.size())
 {
 iter = 10.000
 }
 
 else
 {
  i++
  }
}

Es un ejemplo pseudocodigo que me acabo de inventar.
Recorres un vector como quieras.
Compruebas si todos sus elementos coinciden con los del indice
  • del otro vector.
Cuando llegues al final del vector lo reinicias para que vuelva a comparar, y le sumas + 1 al indice del otro vector. Repites esto hasta que se compruebe el útlimo elemento del último vector.
El ejemplo es meramente ilustrativo para que te hagas una idea de como hacerlo y lo puedas hacer tú.

Si necesitas saber que elementos coinciden, puedes poner un append a un tercer vector o cuaquier contenedor de la STL que se adecue mejor al tipo de datos a almacenar.
Con un vector harías:
if (*iter == vector2)
{
vectorelementos.append(*iter);
vectorposicion.append(i);
v
}

Despues con un for imprimes todos loa valores.



En línea

Mi perfil de patrocinadores de GitHub está activo! Puedes patrocinarme para apoyar mi trabajo de código abierto 💖

CalgaryCorpus


Desconectado Desconectado

Mensajes: 323


Ver Perfil WWW
Re: Intersección de dos vectores
« Respuesta #2 en: 30 Junio 2019, 07:17 am »

Toma los elementos del primer vector y construye un set.
Toma los elementos del Segundo vector y por cada uno de ellos preguntale al set si lo contiene. Si es asi, es parte de la interseccion, sino lo ignoras.
En línea

Aqui mi perfil en LinkedIn, invitame un cafe aqui
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Reto - Intersección de 2 cubos
Ejercicios
[D4N93R] 4 7,524 Último mensaje 19 Agosto 2010, 21:36 pm
por [D4N93R]
Calcular la intersección de dos segmentos
Programación C/C++
DickGumshoe 6 15,400 Último mensaje 31 Octubre 2011, 23:11 pm
por DickGumshoe
Intersección de recta y punto
Programación C/C++
kaostias 4 3,485 Último mensaje 26 Noviembre 2013, 18:23 pm
por kaostias
Intersección linea - triángulo « 1 2 »
Programación C/C++
BlackM4ster 11 6,941 Último mensaje 20 Julio 2014, 21:31 pm
por leosansan
Intersección entre 3 circunferencias o más.
Foro Libre
xustyx 2 4,981 Último mensaje 9 Abril 2015, 16:25 pm
por xustyx
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines