ciao...ho dato uno sguardo al programma...e c'era la parte del merge che mi metteva qualche dubbio....tipo:
codice:
for(int k=0; k<(NUMERO*2); (k++))
{ 
	if((k%2) != 0) { } else 
	{
	VETTORE_MERGE[k] = VETTORE1[k];
	VETTORE_MERGE[k + 1] = VETTORE2[k];
	}
}
secondo me non puoi usare lo stesso indice k sia per i VETTORE1 e VETTORE2 (che hanno dimensione pari a NUMERO) sia per il vettore VETTORE_MERGE ( che invece ha dimensione 2*NUMERO!! ); così facendo quando k sarà maggiore di NUMERO e vai a fare VETTORE1[k], vai ad accedere in zone d memoria che non c'entrano niente con VETTORE1!!
Io ho provato a fare qualche modifica e sembra funzionare...posto sotto il codice del ciclo for modificato:
codice:
for(int k=0; k<(NUMERO*2); (k++))
{ 
	if( f == 0 ) {
	    VETTORE_MERGE[k] = VETTORE1[k1++];
	    f = !f;
     }
	else {    
        VETTORE_MERGE[k] = VETTORE2[k2++];
        f = !f;
        
	}
}
Uso 1 indice per ogni vettore ( anche se se ne potrebbe usare solo 1 mi sà) e poi uso la variabile f facendola commutare da 1 a 0....che se nn ricordo male si chiama operazione di toggle!!...ma cmq poco importa!!...se ci sono problemi....fai un fischio!! ciao