Salve,

ecco il testo dell'esercizietto:
"Data una main che contiene un vettore di interi definito come
int v1[10]={2,4,11,6,17,1,24,4,45,3} , creare una funzione che crea un Vettore v2, che contiene solo gli elementi di v1 maggiori di 5, e lo restituisce al main."

io ho risolto come segue:

codice:
#include <stdio.h>
#include <stdlib.h>


int* elabora(int v1[],int v2[]);
int main() {

    int v1[10]={2,4,11,6,17,1,24,4,45,3};
    int v2[10];
    int i=0;
    int *p;
    p=elabora(v1,v2);
    for (i=0;i<10;i++)
    printf("%d ",p[i]);
    system("PAUSE");
    return 0;
}

int* elabora(int v1[],int v2[]) {
     int *w;
     w=v2;
     int i,k=0;
     for (i=0;i<10;i++)
         if(v1[i]>5) {
                      v2[k]=v1[i];
                      k++;
                     }
     return w;
}
ma non son ben certo, in effetti forse elabora non doveva avere come parametri v2, ma creare v2 stesso (meglio con allocazione dinamica o statica?) . In ogni caso se creo v2 con elabora, nella main devo sempre dichiarare un vettore v2 giusto?
Qual'è il modo più corretto per risolvere l'esercizio?
Grazie