Sinora ho svolto soltanto il primo punto ( però il programma non viene eseguito correttamente...).
il testo del problema completo è:
"Si consideri un vettore “serie” di reali (double), allocato dinamicamente, di dimensioni “n” fornite da
tastiera, contenente elementi generati casualmente nell'intervallo continuo [0, 10] (usare la funzione
“rand()”, scalando opportunamente ad un reale il valore restituito).
1. Scrivere una funzione “filter_vector” che riceve il vettore “serie”, la sua dimensione, e
restituisce un nuovo vettore contenente solo le componenti del vettore in ingresso che
soddisfanno alla relazione:
(in_vector[i] + in_vector[i+1] + in_vector[i+3]) / 3 < 0.5
il prototipo della funzione filter_vector e' il seguente:
double * filter_vector (double * in_vector, int in_vector_size,
int * out_vector_size);
2. scrivere una funzione “istogramma” che riceve il vettore “serie”, la sua dimensione, un numero
di intervalli “k” in cui suddividere l'intervallo [0, 10], e restituisce un vettore di interi di “k”
elementi, le cui componenti sono cosi' calcolate:
elemento 0 = numero di valori del vettore in ingresso compresi tra [0, h]
elemento 1 = numero di valori del vettore in ingresso compresi tra ]2h, 3h]
elemento 2 = numero di valori del vettore in ingresso compresi tra ]3h, 4h]
……
dove “h” e' la dimensione del singolo sottointervallo (da calcolare opportunamente). Il prototipo
della funzione da e' il seguente:
int * istogramma (double * in_vector, int in_vector_size, int k) ".

Ho provato a svolgere, quantomeno, il primo punto ma qualcosa riesco comunque a sbagliarla
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;
                                                                                   }
Non risultano errori nel momento della compilazione. Potreste aiutarmi? ( ancora non ho svolto il secono punto perchè non so come procedere con la funzione istogramma... un passo alla volta :-)
Grazie