Non capisci perche' ragione in modo procedurale invece che in modo funzionale.
La programmazione funzionale e' un paradigma di programmazione abbastanza diverso da quello che si usa di solito.
In particolare, appunto, nella programmazione funzionale non si usa il concetto di parametro passato per reference, cioe' via puntatore, ma solo per valore.
E cosa piu' interessante, nella programmazione funzionale, i parametri VENGONO USATI IN ENTRATA, mentre SOLO IL VALORE DI RITORNO DELLA FUNZIONE viene fatto uscire!
Quindi, a partire da questa logica, il tuo vettore da popolare NON PUO' ESSERE UN PARAMETRO DI INGRESSO, MA DEVE ESSERE IL VALORE DI USCITA della FUNZIONE.
Conseguenza, tu hai scritto una PROCEDURA e invece ti serve una FUNZIONE.
Altra considerazione, un po' piu' sofisticata: la programmazione funzionale prevede un utilizzo della memoria, ed in particolare dello heap, abbastanza allegra. Ed e' per questi che sono stati inventati i garbage collectors.
Se vuoi fare il salto di qualita' nella scrittura di questa FUNZIONE, potresti usare una libreria per il GC. Ma e' mooooolto oltre a quello richiesto dall'esercizio.
Ancora un aiutino: ti serve sapere anche quale e' il numero di elementi che il vettore ritornato dalla FUNZIONE contiene.
E con questo, praticamente e' stato risolto l'esercizo. Ti manca solo il codice.
Una bazzeccola