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

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


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

Desconectado Desconectado

Mensajes: 78


Ver Perfil
fusionar dos vectores
« en: 16 Julio 2013, 20:37 pm »

Hola, querría hacer un programa que fusione dos vectores. Es decir
si v1 = 1,2,3,4 y v2 = 5,6,7,8,9 imprima v = 1,5,2,6,3,7,4,8,9

Hice esté código pero no me ejecuta nada.
Si pudieras decirme que falta para que funcione os lo agradecería :)

Código
  1. #include<iostream>
  2. #include<vector>
  3. using namespace std;
  4.  
  5. vector<int>fusion(vector<int>v1,vector<int>v2){
  6. int i=0; int j; vector<int>v;
  7. if(v1.size()>v2.size()){
  8.         while(i<v2.size()){
  9.                          v.push_back(v1[i]);
  10.                          v.push_back(v2[i]);
  11.                            }      
  12.         j=v.size()/2;
  13.         while(i<v1.size()){
  14.                          v.push_back(v1[i]);  
  15.                            }        
  16.                             }
  17. else if(v1.size()<v2.size()){    
  18.      while(i<v1.size()){
  19.      v.push_back(v1[i]);
  20.      v.push_back(v2[i]);
  21.                            }      
  22.         j=v.size()/2;
  23.         while(i<v2.size()){
  24.                          v.push_back(v2[i]); }}
  25. else{
  26.       while(i<v1.size()){
  27.      v.push_back(v1[i]);
  28.      v.push_back(v2[i]);
  29.                            }}
  30.                             return v;   }
  31.  
  32.  
  33. int main(){ int n1,n2,e;
  34.    cout<<"introduzca el tamaño de v1"<<endl;
  35.    cin>>n1;
  36.    vector<int>v1(n1);
  37.    for(int i=0;i<n1;i++){
  38.            cout<<"el elemento"<<" "<<i<<endl;
  39.            cin>>e;
  40.            }
  41.  
  42.    cout<<"introduzca el tamaño de v2"<<endl;
  43.    cin>>n2;
  44.    vector<int>v2(n2);
  45.    for(int i=0;i<n2;i++){
  46.            cout<<"el elemento"<<" "<<i<<endl;
  47.            cin>>e;
  48.            }  
  49.    vector<int>u=fusion(v1,v2);
  50.    cout<<"[";
  51.    for(int i=0;i<u.size();i++){
  52.            cout<<u[i]<<endl;
  53.            }
  54.    cout<<"]"<<endl;  
  55.  
  56.    system ("pause");
  57.    return 0;}


En línea

eferion


Desconectado Desconectado

Mensajes: 1.248


Ver Perfil
Re: fusionar dos vectores
« Respuesta #1 en: 16 Julio 2013, 22:29 pm »

Tienes que incrementar las variables i,j en cada iteración para recorrer los dos vectores.

En mi humilde opinión yo usaría los buches while para situaciones en las que no puedo saber cuantas repeticiones va a tener un bucle.

Para bucles con un número conocido de repeticiones ( en este caso el tamaño del vector ), es mejor usar bucles for, ya que así es más difícil que se te pase incrementar la variable del índice.


En línea

Danyfirex


Desconectado Desconectado

Mensajes: 493


My Dear Mizuho


Ver Perfil
Re: fusionar dos vectores
« Respuesta #2 en: 17 Julio 2013, 21:27 pm »

Puedes hacer algo asi.


Código
  1. #include<iostream>
  2. #include<vector>
  3. using namespace std;
  4.  
  5.  
  6.  
  7. int main(){
  8.     int n1,n2,e;
  9.    cout<<"introduzca el tamaño de v1"<<endl;
  10.    cin>>n1;
  11.    vector<int>v1(n1);
  12.    for(int i=0;i<n1;i++){
  13.            cout<<"el elemento"<<" "<<i<<endl;
  14.            cin>>v1[i];
  15.            }
  16.  
  17.  
  18.    cout<<"introduzca el tamaño de v2"<<endl;
  19.    cin>>n2;
  20.    vector<int>v2(n2);
  21.    for(int i=0;i<n2;i++){
  22.            cout<<"el elemento"<<" "<<i<<endl;
  23.            cin>>v2[i];
  24.            }
  25.  
  26. //nuevo vector con los arrays concatenados          
  27. vector<int>newvector;
  28. newvector.reserve( v1.size()+v2.size());
  29. newvector.insert( newvector.end(), v1.begin(), v1.end() );
  30. newvector.insert( newvector.end(), v2.begin(), v2.end() );
  31.  
  32.  
  33.    cout<<"[";
  34.    for(int i=0;i<newvector.size();i++){
  35.            cout<<newvector[i]<<endl;
  36.            }
  37.    cout<<"]"<<endl;
  38.  
  39.  
  40.    return 0;}
  41.  


Saludos

edito:

Código
  1. cout<<"introduzca el tamaño de v1"<<endl;
  2.    cin>>n1;
  3.    vector<int>v1(n1);
  4.    for(int i=0;i<n1;i++){
  5.            cout<<"el elemento"<<" "<<i<<endl;
  6. // se supone que aquí deberias llenado tu vector cin>>v1[i]; no e :S
  7.            cin>>e;
  8.            }


« Última modificación: 18 Julio 2013, 00:01 am por Danyfirex » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Problema al fusionar capas « 1 2 »
Diseño Gráfico
Jnex 15 12,909 Último mensaje 17 Marzo 2009, 17:17 pm
por heribertostar
No puedo fusionar MSN con Skype
Mensajería
ENCUENTROSWEB 9 11,313 Último mensaje 26 Diciembre 2012, 16:36 pm
por ENCUENTROSWEB
fUSIONAR ARCHIVOS EN C
Programación C/C++
xdroid 3 5,737 Último mensaje 7 Mayo 2013, 06:08 am
por xdroid
Fusionar do archivos .Jar
Hacking
karrax 0 2,048 Último mensaje 3 Julio 2015, 18:53 pm
por karrax
ayuda fusionar gameblindage.dll con exe
Programación General
cyberhalcon 1 1,905 Último mensaje 9 Mayo 2016, 03:04 am
por ThunderCls
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines