Oregon, ho modificato la chiamata a funzione con i parametri corretti, ma quando eseguo i vettori risultano tutti nulli.
codice:#include <stdio.h> #include <stdlib.h> #include <malloc.h> #include <time.h> /* Dichiarazioni funzioni */ void riempi_vettore (double *v, int size, double a, double b); double * filter_vector( double *, int , int *); int main (void) { double *serie; double *out; int i,n, out_size; printf ("Immetti da tastiera le dimensioni del vettore:\n"); scanf ("%d", &n); serie=(double *) malloc(n*sizeof(double)); riempi_vettore (serie,n,0,10); out= filter_vector(serie, 100, &out_size); printf("la dim del vettor in uscita e %d\n" , out_size); for(i=0; i<out_size; i++){ printf("out[%d]=%f\n" , i , out[i]); } system("pause"); } /* Funzione riempi vettore */ void riempi_vettore (double *v, int size,double a, double b) { int i; srand(time(NULL)); for (i=0; i<size; i++) { v[i]= (rand()*(b-a))/size; } } double * filter_vector( double *in_vector , int in_vector_size, int *out_vector_size){ int i, j; double *out_vector; *out_vector_size=0; for(j=0; j<in_vector_size; j++){ if(((in_vector[j]+in_vector[j+1]+in_vector[j+3])/3)<0.5){ *out_vector_size=*out_vector_size+1; } } out_vector=(double*)malloc(*out_vector_size*sizeof(double)); i=0; for(j=0; j<in_vector_size; j++){ if(((in_vector[j]+in_vector[j+1]+in_vector[j+3])/3)<0.5){ out_vector[i]=in_vector[j]; i++; } } return out_vector; }

Rispondi quotando