Buona sera. Sto svolgendo il seguente esercizio

Si considerino due array vx[ ] e vy[ ] di n elementi di tipo double, allocati dinamicamente e con n inserito da tastiera, riempito di numeri casuali generati secondo la formula:
(rand()%1500 + 1)/1500.0
Si supponga che tali array siano relativi alle componenti di velocita'; supporre che i valori siano campionati ogni ogni 10 millisecondi (T=10^-2).
1. Scrivere una funzione che restituisce i valori delle posizioni nei vettori x[ ] e y[ ], calcolate utilizzando l'integrazione approssimata.
2. Scrivere una funzione che “filtra” i vettori x[] e y[], copiando, in due nuovi vettori fx[] e fy[],
solo gli elementi che soddisfano la seguente condizione:
dist ( (x[i],y[i]) , (x[i+1], y[i+1]) ) > 0.001


Ho scritto il seguente codice:




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


void riempi_vettori (double *v, int size);
void stampa_vettori (double *v, int size);
void posizione ( double *v1, int size, double *xx, double T); 
int filter_vector_size (double *xx, int size);
double filter_vector (double *xx, int k, double *fxx);

int main (void) {
    int i, n, dimx, dimy,j;
    double *vx, *vy, T =0.01, *x, *y, *fx, *fy;
    
    printf ("Inserisci da tastiera la dimensione dei vettori \n");
    scanf ("%d", &n);
    
    /* Alloco dinamicamente i vettori */
    vx= (double*)malloc(n*sizeof(double));
    vy= (double*)malloc(n*sizeof(double));
    
    /* Riempio i vettori */
    riempi_vettori (vx,n);
    stampa_vettori (vx,n);

    riempi_vettori (vy, n);
    stampa_vettori (vy, n);

/* Alloco dinamicamente i vettori x e y */

x = (double*)malloc(n*sizeof(double));
y = (double*)malloc(n*sizeof(double));

/* Riempio i vettori con l'integrazione approssimata */

posizione (vx,n,x,T);
posizione (vy,n,y,T);
for (i=0;i<n;i++){
    printf ("il valore di x e' x[%d]=%f\n",i,x[i]);
    printf ("il valore di y e' y[%d]=%f\n",i,y[i]);

}
    dimx = filter_vector_size(x,n);
    dimy = filter_vector_size(y,n);
    fx=(double*)malloc(dimx*sizeof(double));
    fy=(double*)malloc(dimy*sizeof(double));
    filter_vector (x,dimx,fx);
    filter_vector (y,dimy,fy);
    for (i=0;i<dimx;i++){
    printf ("la funzione fx e' fx[%d]=%f\n",i,fx[i]);
           }
    for (j=0;j<dimx;j++){
    printf ("la funzione fy e' fy[%d]=%f\n",j,fy[j]);
     }
    
    
    system("pause");
}


void riempi_vettori (double *v, int size) {
     int i;
     
     srand(time(NULL));
     for(i=0; i<size; i++) {
              v[i]=(rand()%1500+1)/1500.0;
              }
        }
        
void stampa_vettori (double *v, int size) {
     int i;
     for(i=0; i<size; i++){
              
     printf (" Stampo vettore v[%d]=%lf \n", i, v[i]);
     }
}

void posizione ( double *v1, int size, double *xx, double T ) {
       int i;
       xx[0]=v1[0]*T;
       for (i=1; i<size-1; i++) {
           xx[i]=xx[i-1]+v1[i-1]*T;
           }
       }

int filter_vector_size (double *xx, int size) {
    int i, k;
    
    k=0;
    for(i=0; i<size; i++) {
    if (sqrt((xx[i+1]-xx[i])*(xx[i+1]-xx[i]))>0.001){
                                 k++;
           }
       }  
       return k;
}       

double filter_vector (double *xx, int k, double *fxx) {
       int i;    
       for (i=0;i<k;i++){
           if (sqrt((xx[i+1]-xx[i])*(xx[i+1]-xx[i]))>0.001){
                      fxx[i]= sqrt((xx[i+1]-xx[i])*(xx[i+1]-xx[i]));
           }
       } 
       
}
Non vengono segnalati errori di compilazione e al momento dell'esecuzione vengono stampati soltanto i vettori velocità.
Ho provato a rivederlo ma a me sembra essere "corretto". Eppure qualcosa non va

Volevo inoltre chiedervi se potreste dirmi come fare a "compattare" in un'unica funzione la funzione filter_vector_size e la funzione filter_vector ( che in questo codice ho scritto per comodità separatamente, ma il prof richiede sia fatto tutto in un'unica funzione).

V i ringrazio!