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;
}