View Full Version : [C++]Unione di array(vettori)
Salve a tutti,sto preparando un esame di fondamenti di informatica,ma sono incappato in un problema alquanto vergognoso:non mi ricordo come si fanno ad unire piu' vettori in un unico vettore.
Non preoccupatevi,non faccio cosi' pena a programmare,ma adesso non mi ricordo proprio come si fa,anche se è una cosa elementare.....vuoto di memoria!:D
Il programma prevedeva di leggere da 3 file diversi e di inserirli in tre vettori,ordinarli e poi unirli in un altro vettore,salvandolo in un file.
Aiutatemi vi prego :(
Crei un vettore grande quanto il vettore risultante e ci copi gli elementi dentro...o uno ad uno (tre for o un solo for se hanno dimensione uguale), oppure usi la memcpy.
Crei un vettore grande quanto il vettore risultante e ci copi gli elementi dentro...o uno ad uno (tre for o un solo for se hanno dimensione uguale), oppure usi la memcpy.
questo della memcpy non l'ho mai sentito,come si usa?
Cmq per i for ci stavo epnsando e ho scritto una cosa cosi':
void unione(vettore v1,vettore v2,vettore v3,vettore v,int &riemp){
int i;
int j=i+1;
int k=j+1;
for(i=0;i<riemp;i++){{
v[i]=v1[i];
i++;
}
for(j=0;j<riemp;j++){{
v[j]=v2[i];
j++;
}
for(k=0;k<riemp;k++){{
v[k]=v3[i];
k++;
}
cout<<v[i]<<endl;
}
}
}
}
Il problema è che mi da una miriade di numeri messi a casaccio.
Dove sbaglio?
Col memcpy funge tipo così... (Potrebbe essere sbagliato:D )
template <typename T>
void merge( T* dest, size_t length1, T* src, size_t length2 );
{
//espandi il primo array
realloc( dest, sizeof(T) * (length1+ length2 ) );
//incolla nello spazio vuoto il secondo
memcpy(dest + length1, src, sizeof( T )* length2 );
}
IMHO è meglio perchè è molte volte più veloce di un for...
Col memcpy funge tipo così... (Potrebbe essere sbagliato:D )
template <typename T>
void merge( T* dest, size_t length1, T* src, size_t length2 );
{
//espandi il primo array
realloc( dest, sizeof(T) * (length1+ length2 ) );
//incolla nello spazio vuoto il secondo
memcpy(dest + length1, src, sizeof( T )* length2 );
}
IMHO è meglio perchè è molte volte più veloce di un for...
capito,il problema è che vedendol oadesso,non lo abbiamo mai fatto.Quindi non so se posso usarlo nel test al posto dei for....
Il problema è che mi da una miriade di numeri messi a casaccio.
Dove sbaglio?
Se posso dirlo francamente, anche quelle istruzioni mi sembrano messe a casaccio ;)
Hai sbagliato l'inizializzazione delle variabili, dopo le reinizializzi anche nel for, poi fai un doppio incremento nel for. Probabilmente è sbagliato anche il passaggio dei parametri alla funzione.
Se posso dirlo francamente, anche quelle istruzioni mi sembrano messe a casaccio ;)
Hai sbagliato l'inizializzazione delle variabili, dopo le reinizializzi anche nel for, poi fai un doppio incremento nel for. Probabilmente è sbagliato anche il passaggio dei parametri alla funzione.
lo so,per questo chiedevo una mano...
lo so,per questo chiedevo una mano...
Scusa se sono franco, ma qui il problema è la conoscenza del linguaggio, non è il non sapere come fare ad unire 3 vettori. Se anche ti chiedessi di scrivere una funzione che copia il contenuto di un vettore in un altro avresti secondo me gli stessi problemi.
L'unico modo per aiutarti sarebbe metterti direttamente la soluzione, ma in questo forum non si risolvono esercizi completi.
Scusa se sono franco, ma qui il problema è la conoscenza del linguaggio, non è il non sapere come fare ad unire 3 vettori. Se anche ti chiedessi di scrivere una funzione che copia il contenuto di un vettore in un altro avresti secondo me gli stessi problemi.
L'unico modo per aiutarti sarebbe metterti direttamente la soluzione, ma in questo forum non si risolvono esercizi completi.
Non mi importava la tua franchezza,ma la tua disponibilità.
Se non vuoi darmi una mano puoi benissimo non dire niente,piuttosto che dirmi che non so fare niente(per non essere volgare,poikè mi ritengo una persona civile),come ha fatto qualcun altro.
E sai che ti dico delle mie conoscenze?Sono riuscito a farlo,da solo,e anche in piu' modi,ma non grazie alla tua franchezza.
Ciao
E sai che ti dico delle mie conoscenze?Sono riuscito a farlo,da solo,e anche in piu' modi,ma non grazie alla tua franchezza.
Bene, è quello che volevo, se ti davo il codice mi dici cosa imparavi ?
Bene, è quello che volevo, se ti davo il codice mi dici cosa imparavi ?
Avrei di sicuro potuto fare di piu',risparmiando tempo e fatica per una cosa stupida,e avrei potuto dedicare quel tempo in altre materie...
ciao
Avrei di sicuro potuto fare di piu',risparmiando tempo e fatica per una cosa stupida,e avrei potuto dedicare quel tempo in altre materie...
ciao
Ah. Quindi la cosa stupida è meglio che la fanno gli altri, così te ti dedichi ad attività più nobili... mi dispiace solo di averti aiutato guarda :D
Ah. Quindi la cosa stupida è meglio che la fanno gli altri, così te ti dedichi ad attività più nobili... mi dispiace solo di averti aiutato guarda :D
No,mi sono espresso male forse,pero' voglio dire,invece di perdere una giornata intera su un programma,mi avrebbe sicuramente giovato finirlo prima,dato che non devo studiare solo informatica,e in periodo di esami,il tempo è un fattore troppo importante.
Scusa ancora se hai capito male o ti ho fatto capire male io.
DanieleC88
19-01-2009, 19:44
Non mi importava la tua franchezza,ma la tua disponibilità.
Se non vuoi darmi una mano puoi benissimo non dire niente,piuttosto che dirmi che non so fare niente(per non essere volgare,poikè mi ritengo una persona civile),come ha fatto qualcun altro.
E sai che ti dico delle mie conoscenze?Sono riuscito a farlo,da solo,e anche in piu' modi,ma non grazie alla tua franchezza.
Ciao
LOL, apprezzo il tuo coraggio, parlare così ad un moderatore... :Prrr:
Onestamente, se non ci sbatti la testa tu non serve a niente. Ringrazia di averci perso una giornata oggi, magari questo ti risparmierà tante giornate in futuro...
Più che indirizzarti sulla giusta strada e darti tutti i consigli e gli input possibili per risolvere, cosa avrebbe dovuto fare cionci, fare i tuoi esercizi? :D
Su un forum pubblico come questo puoi solo chiedere gentilmente e sperare di ricevere attenzione (che in quel caso, fidati, ti arriverà puntuale ed impeccabile), non puoi pretendere che gli altri facciano il tuo lavoro. Sono reduce anche io da una giornataccia con un progetto universitario che non voleva saperne di funzionare, quindi capisco benissimo il fattore nervosismo, ma non dimenticare mai di tenere i toni sotto controllo.
ciao ;)
LOL, apprezzo il tuo coraggio, parlare così ad un moderatore... :Prrr:
Onestamente, se non ci sbatti la testa tu non serve a niente. Ringrazia di averci perso una giornata oggi, magari questo ti risparmierà tante giornate in futuro...
Più che indirizzarti sulla giusta strada e darti tutti i consigli e gli input possibili per risolvere, cosa avrebbe dovuto fare cionci, fare i tuoi esercizi? :D
Su un forum pubblico come questo puoi solo chiedere gentilmente e sperare di ricevere attenzione (che in quel caso, fidati, ti arriverà puntuale ed impeccabile), non puoi pretendere che gli altri facciano il tuo lavoro. Sono reduce anche io da una giornataccia con un progetto universitario che non voleva saperne di funzionare, quindi capisco benissimo il fattore nervosismo, ma non dimenticare mai di tenere i toni sotto controllo.
ciao ;)
Non metto assolutamente in dubbio il fatto che gli utenti del forum siano disponibili,su questo non ci piove,perkè sono frequentatore anche di altre sezioni del forum e mi sono sempre trovato bene con tutti.Pero' mi da fastidio se una persona mi dice che sono incapace,quando ho difficoltà a fare qualcosa.Non penso che sia un grande incoraggiamento...
Inoltre non voglio che altri facciano il mio lavoro,tant'è che di codice ne scrivo a morire,e ne ho anche postato un pezzetto precedentemente,è solo che volevo sapere che c'era di sbagliato in quel pezzetto,tutto qui,non volevo approfondimenti o cose varie.Mi da solo fastidio che mi si dice che è tutto sbagliato e basta:(
Cmq,il programma l'ho finito,amen :D
DanieleC88
19-01-2009, 20:02
Ma no, le parole di cionci mi sembravano molto più innocenti, ti ha semplicemente fatto notare che una più profonda conoscenza del linguaggio ti avrebbe risolto il problema e che forse era il caso di ripassare alcuni concetti, non mi sembra di leggere che "sei incapace". :)
Vabbe', "tutto è bene quel che finisce bene". In bocca al lupo per gli esami. ;)
Il codice precedente era tutto sbagliato.
Non ti ho detto che sei un incapace, ti ho detto che dovevi studiare il linguaggio per poter risolvere senza fatica il problema. Ripeto: se ti avessi dato la soluzione non avrei fatto i tuoi interessi.
Se poi ci hai letto altre cose, che ti devo dire, me ne scuso :boh:
Il codice precedente era tutto sbagliato.
Non ti ho detto che sei un incapace, ti ho detto che dovevi studiare il linguaggio per poter risolvere senza fatica il problema. Ripeto: se ti avessi dato la soluzione non avrei fatto i tuoi interessi.
Se poi ci hai letto altre cose, che ti devo dire, me ne scuso :boh:
Vabe,a sto punto fa niente,per qualunque cosa.
Mi scuso se so stasto tropp oaggressivo,ma sto cavolo di programma l'ho odiato dal profondo del cuore oggi:p
Ma no, le parole di cionci mi sembravano molto più innocenti, ti ha semplicemente fatto notare che una più profonda conoscenza del linguaggio ti avrebbe risolto il problema e che forse era il caso di ripassare alcuni concetti, non mi sembra di leggere che "sei incapace". :)
Vabbe', "tutto è bene quel che finisce bene". In bocca al lupo per gli esami. ;)
Crepi!:sperem:
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.