Ragazzi, ho provato a fare quest'esercizio:
Scrivere una funzione
vector<int> merge(vector<int> a, vector <int> b)
che unisca due vettori, alternando elementi di entrambi. Se un vettore è di dimensioni minori, eseguire l'alternanza finché possibile e aggiungere gli elemtn restanti del vettore più lungo. Se per esempio, a é
1 4 9 16
e b é
9 7 4 9 11
merge restituirà il vettore
1 9 4 7 9 4 16 9 11
Io ho scritto la funzione così:
Solo che non se se funziona, perchè il compilatore compila tutto correttamente, però poi quando lancio l'eseguibile, non mi dà nessun valore di ritorno... Come mai? Cosa ho sbagliato?codice:vector <int> merge (vector <int> a, vector <int> b) { vector <int> c (a.size()+ b.size()); int j = 0; int i; int k = 1; int temp; if (a.size() < b.size()) { c[0] = a[0]; c.push_back (a[0]); for (i=1; k < c.size()-1;i=i++) { while (i<a.size()-1) {a[i] = temp; c[i+1] = temp; c.push_back(temp);} c[k] = b[j]; c.push_back(b[j]); j++; k = k+2;} return c; } else if (b.size() < a.size()) { c[0] = b[0]; c.push_back (b[0]); for (i=1; k < c.size()-1;i=i++) { while (i<b.size()-1) {b[i] = temp; c[i+1] = temp; c.push_back(temp);} c[k] = a[j]; c.push_back(a[j]); j++; k = k+2;} return c; } }