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ì:
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;
}
}
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?