Oppure

Loading
04/03/12 12:29
-@EnRy@-
Ciao a tutti, ho un problemino non riesco a unire due vettori per crearne uno singolo... Mi potete dire come si fa?...
aaa
04/03/12 12:56
Poggi Marco
Ciao!

Cosa intendi per unione di due vettori?
I vettori hanno lo stesso numero di dimensioni?

Posta il tuo tentativo.
aaa
04/03/12 13:00
-@EnRy@-
Devo fare un programma che acquisisce 2 vettori a caso li ordina e poi li unisce ad un altro vettore più grande e li ordina nuovamente! :)

#include<iostream>
#include<math.h>
#include<stdio.h>
#include<conio.h>

using namespace std;

int main() {
	int max=10,v1[max],v2[max],v[max+max],i,j,temp,temp2;
	
	srand(time(NULL));
	for(i=0;i<max;i++)
	{
	 				  v1[i]=rand()%(100);
				      v2[i]=rand()%(100);
	}
	
 cout<<"\nstampa 1 vettore: ";
 for(i=0;i<max;i++)
 {
   cout<<"\nv"<<i+1<<" = " <<v1[i]<<endl;
 }
 cout<<"\n-----------------------------------------";
  cout<<"\n\nStampa 2 vettore: "<<endl;
 for(i=0;i<max;i++)
 {
   cout<<"\nv"<<i+1<<" = " <<v2[i]<<endl;
}

    for(i=0;i<max;i++)
    {
       for(j=i+1;j<max;j++)
       {
           if(v1[i]>v1[j])
           {
               temp=v1[i];
               v1[i]=v1[j];
               v1[j]=temp; 

           } 
		   if(v2[i]>v2[j])
		   {
		   				 			   
			    temp2=v2[i];
               v2[i]=v2[j];
               v2[j]=temp2;
			           
		   }           
       }               
    }
 cout<<"\n-----------------------------------------";
cout<<"\n\nStampa primo vettore in modo ordinato: "<<endl;
 for(i=0;i<max;i++)
 {
   cout<<"\nv"<<i+1<<" = " <<v1[i]<<endl;
 }
  cout<<"\n-----------------------------------------";
cout<<"\n\nStampa 2 vettore in modo ordinato: "<<endl;
 for(i=0;i<max;i++)
 {
   cout<<"\nv"<<i+1<<" = " <<v2[i]<<endl;
}

  cout<<"\n-----------------------------------------";
    cout<<"\n-----------------------------------------";
      cout<<"\n-----------------------------------------";
      

for(i=0;i<max;i++)
{
 	v1[i]=v[i];
 	
	 			  
}

/*for(i=10;i<20;i++)
{
 for(j=0;i<max;i++)
 {
     v[i]=v2[j];
 }
}*/

    cout<<"\n-----------------------------------------";
      cout<<"\n-----------------------------------------";
      cout<<"\n\nStampa vettore unito"<<endl;
for(i=0;i<max+max;i++)
{
 					  cout<<endl;
 					  cout<<v[i]<<endl;
}





 while(!getch());
 return 0;
}
aaa
04/03/12 13:57
Poggi Marco
Doppio
Ultima modifica effettuata da Poggi Marco 04/03/12 13:58
aaa
04/03/12 13:57
Poggi Marco
Ho letto il programma, e ho trovato alcune confusioni sulle variabili che iterano sui vettori da caricare. Per ovviare a ciò, ti consiglio di utilizzare le funzioni.

Nel ciclo di caricamento del secondo vettore, tu dichiari:
 for(j=0;i<max;i++)   // nell' intestazione utilizzi la variabile j ed i 
 {
     v[i]=v2[j];  
 }
}


Mentre, dovresti scrivere:
for(j=max;j<2*max;j++)  // j parte da 10 e arriva a 19
 {
     v[ j ]= v2[ j - max ];  
 }
aaa
04/03/12 14:02
-@EnRy@-
Postato originariamente da Poggi Marco:

Doppio



Capito tutto grazie mille :) Che errori stupidi che ho fatto!


Edit: Anche correggiendo come dici te il programma non prende il primo vettore! cioè v1!!


#include<iostream>//zandegiacomo enrico
#include<math.h>
#include<stdio.h>
#include<conio.h>

using namespace std;

int main() {
	int max=10,v1[max],v2[max],v[max+max],i,j,temp,temp2;
	
	srand(time(NULL));
	for(i=0;i<max;i++)
	{
	 				  v1[i]=rand()%(100);
				      v2[i]=rand()%(100);
	}
	
 cout<<"\nstampa 1 vettore: ";
 for(i=0;i<max;i++)
 {
   cout<<"\nv"<<i+1<<" = " <<v1[i]<<endl;
 }
 cout<<"\n-----------------------------------------";
  cout<<"\n\nStampa 2 vettore: "<<endl;
 for(i=0;i<max;i++)
 {
   cout<<"\nv"<<i+1<<" = " <<v2[i]<<endl;
}

    for(i=0;i<max;i++)
    {
       for(j=i+1;j<max;j++)
       {
           if(v1[i]>v1[j])
           {
               temp=v1[i];
               v1[i]=v1[j];
               v1[j]=temp; 

           } 
		   if(v2[i]>v2[j])
		   {
		   				 			   
			    temp2=v2[i];
               v2[i]=v2[j];
               v2[j]=temp2;
			           
		   }           
       }               
    }
 cout<<"\n-----------------------------------------";
cout<<"\n\nStampa primo vettore in modo ordinato: "<<endl;
 for(i=0;i<max;i++)
 {
   cout<<"\nv"<<i+1<<" = " <<v1[i]<<endl;
 }
  cout<<"\n-----------------------------------------";
cout<<"\n\nStampa 2 vettore in modo ordinato: "<<endl;
 for(i=0;i<max;i++)
 {
   cout<<"\nv"<<i+1<<" = " <<v2[i]<<endl;
}

  cout<<"\n-----------------------------------------";
    cout<<"\n-----------------------------------------";
      cout<<"\n-----------------------------------------";
      

for(i=0;i<max;i++) // i parte da 0 e arriva a 9 
{
 	v1[i]=v[i];
 	
	 			  
}

    for(j=max;j<2*max;j++)  // j parte da 10 e arriva a 19
     {
         v[ j ]= v2[ j - max ];  
     }
    cout<<"\n-----------------------------------------";
      cout<<"\n-----------------------------------------";
      cout<<"\n\nStampa vettore unito"<<endl;
for(i=0;i<max+max;i++)
{
 					  cout<<endl;
 					  cout<<v[i]<<endl;
}






 while(!getch());
 return 0;
}
Ultima modifica effettuata da -@EnRy@- 04/03/12 14:05
aaa
04/03/12 14:14
Poggi Marco
Edit: Anche correggiendo come dici te il programma non prende il primo vettore! cioè v1!!

Non carica il primo vettore, perché hai invertito l' ordine dei termini dell' uguaglianza.
aaa
04/03/12 14:26
-@EnRy@-
Postato originariamente da Poggi Marco:

Edit: Anche correggiendo come dici te il programma non prende il primo vettore! cioè v1!!

Non carica il primo vettore, perché hai invertito l' ordine dei termini dell' uguaglianza.



Ok Perfetto...
Grazie :) :k:

Ultima modifica effettuata da -@EnRy@- 04/03/12 17:06
aaa