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