ciao!! ho provato a fare questo esercizio ma non funziona,il compilatore non mi da errore ma poi non parte...ringrazio chiunque abbia voglia di dargli un'occhiata...

codice:
/*Scrivere una funzione che ricevuto un array in ingresso,
restituisca un array allocato dinamicamente e la sua
capacitaÌ. Il nuovo array dovra contenere solo i numeri
positivi dell’array passato in ingresso.*/

#include<iostream>
#include<cstdlib>
using namespace std;

int contapos (int[]);
void riempi_array(int[],int[]);
void stampa_array(int[],int);

int main()
{
    int a[6]={1,-2,4,-7,6,-5};  
    int *posi;
    int pos=contapos(a);
    posi=new int[pos];
    riempi_array(posi,a);
    stampa_array(posi,pos);  
    delete [] posi;
     
   system("pause");   

}


int contapos(int a[])
{
    int numpos=0;
    for(int i=0; i<6; i++)
    {
        if(a[i]>0)
          numpos++;    
    }
    return numpos;
}

void riempi_array (int posi[], int a[])
{
     int j=0;
     for (int i=0; i<6; i++)
     {
         if(a[i]>0)
            posi[j]=a[i];
            j++;
     } 
}

void stampa_array(int posi[],int pos)
{
     for(int i=0; i<pos; i++)
         cout<<posi[i]<<"  ";
         cout<<endl;
}