-@EnRy@- (Normal User)
Rookie
Messaggi: 41
Iscritto: 13/11/2011
|
Ciao a tutti, ho un problemino non riesco a unire due vettori per crearne uno singolo... Mi potete dire come si fa?...
|
|
Poggi Marco (Member)
Guru
Messaggi: 969
Iscritto: 05/01/2010
|
Ciao!
Cosa intendi per unione di due vettori?
I vettori hanno lo stesso numero di dimensioni?
Posta il tuo tentativo.
|
|
-@EnRy@- (Normal User)
Rookie
Messaggi: 41
Iscritto: 13/11/2011
|
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!
Codice sorgente - presumibilmente C++ |
#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; }
|
|
|
Poggi Marco (Member)
Guru
Messaggi: 969
Iscritto: 05/01/2010
|
Doppio
Ultima modifica effettuata da Poggi Marco il 04/03/2012 alle 14:58 |
|
Poggi Marco (Member)
Guru
Messaggi: 969
Iscritto: 05/01/2010
|
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:
Codice sorgente - presumibilmente Plain Text |
for(j=0;i<max;i++) // nell' intestazione utilizzi la variabile j ed i
{
v[i]=v2[j];
}
}
|
Mentre, dovresti scrivere:
Codice sorgente - presumibilmente Plain Text |
for(j=max;j<2*max;j++) // j parte da 10 e arriva a 19
{
v[ j ]= v2[ j - max ];
}
|
|
|
-@EnRy@- (Normal User)
Rookie
Messaggi: 41
Iscritto: 13/11/2011
|
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!!
Codice sorgente - presumibilmente C++ |
#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@- il 04/03/2012 alle 15:05 |
|
Poggi Marco (Member)
Guru
Messaggi: 969
Iscritto: 05/01/2010
|
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.
|
|
-@EnRy@- (Normal User)
Rookie
Messaggi: 41
Iscritto: 13/11/2011
|
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
Ultima modifica effettuata da -@EnRy@- il 04/03/2012 alle 18:06 |
|
subazu (Normal User)
Rookie
Messaggi: 35
Iscritto: 06/08/2011
|
Se poi alla fine devi riordinare il terzo vettore con l'algoritmo che hai usato in cima per ordinare il primo e il secondo, c'è un modo molto più efficiente per fare il lavoro del tuo intero algoritmo.
Ultima modifica effettuata da subazu il 04/03/2012 alle 21:18 |
|