Ecco, avendo variato il codice, rendendo dinamico il vettore, ma splittando la parte di inserimento di dati, non funziona ed è come se "skippasse" proprio la funzione...

codice:
#include <cstdio>
#include <iostream>
int i, n, a, j; 
int trovato = 0;
int num;
int vector2[100]; 
int vector1[100];
int inserimento(int n, int array[]);

int main()
{
    int *array;
    std::cout << "Quanti numeri: ";
    std::cin >> n;
    array= (int *) malloc (n*sizeof(int));

int inserimento(int n, int array[]);

printf ("Numero da cercare: ");
scanf ("%d", &num);
i = 0;

do
{
if (array[i] == num)
{
trovato = 1;
}
else
{
i++;
}
} while (trovato == 0 && i < n);

if (trovato)
{
std::cout << std::endl << std::endl << "Trovato" << std::endl;
std::cout << "L'elemento avente numero: " << array[i] << " si trova nella posizione: " << i+1 << std::endl;
a=i;

std::cout << std::endl << std::endl << "Stampo la lista degli elementi del primo vettore" << std::endl;
for (i=0; i<a; i++)
{
    j=i;
    vector1[j]=array[i];
    std::cout << vector1[j] << " ";
};

std::cout << std::endl << std::endl << "Stampo la lista degli elementi del secondo vettore" << std::endl;
for (i=a; i<n; i++)
{
    j=a;
    vector2[j]=array[i];
    std::cout << vector2[j] << " ";
};
}
else 
     {
     std::cout << "Numero non trovato" << std::endl;
     }
     
std::cout << std::endl << std::endl << std::endl << std::endl;
system("pause");
} 

int inserimento (int n, int array[])
{
for (i = 0; i < n; i++)
{
std::cout << "Numero "<< i+1 <<" : ";
std::cin >> array[i];
}
}