Sono alle prese con un esercizio:
"Si consideri un sistema di acquisizione dati che campiona, ogni 20 millisecondi, i segnali provenienti da un accelerometro triassiale (X, Y e Z). I dati campionati sono i seguenti:
• accelerazione X (double)
• accelerazione Y (double)
• accelerazione Z (double)
1. Allocare tre vettori di double acc_x, acc_y e acc_z, di dimensioni “n” fornite da tastiera (i tre vettori devono avere la stessa dimensione) e riempirli di valori casuali utilizzando la formula:
(rand()/(float)RAND_MAX) * 2.0 – 1.0.
2. Calcolare i valori di velocita' X, Y e Z, per ogni istante di campionamento utilizzando la
formula di integrazione approssimata:
v=v−1+aT
Dove T e' il periodo di integrazione. L'integrazione va eseguita solo se l'accelerazione di almeno un asse e' superiore, in valore assoluto, a 0.05 m/s^2.
I valori di velocita' vanno inseriti in tre vettori vel_x, vel_y e vel_z, la cui dimensione va opportunamente determinata."


Il mio codice e':
codice:
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <time.h>



void riempi_vettore (double *v, int size);
void stampa_vettore (double *a, int size);
int dimensione_vel (double *ax, double *ay, double *az, int size, double T);
void calcola_vel (double *ax, double *ay, double *az, int size, double *vx, double *vy, double *vz, double T);


int main(void) {
    
    double *acc_x, *acc_y, *acc_z, T;
    double *vel_x, *vel_y, *vel_z;
    int  n, dim;
    
    T = 0.01;
    
    printf ("Inserisci n da tastiera \n");
    scanf ("%d",&n);
    
    /* Alloco dinamicamente i vettori */
    
    acc_x=(double*)malloc(n*sizeof(double));
    acc_y=(double*)malloc(n*sizeof(double));
    acc_z=(double*)malloc(n*sizeof(double));
    
    /* Riempi vettori */
    riempi_vettore (acc_x, n);
    stampa_vettore (acc_x, n);
    riempi_vettore (acc_y, n);
    stampa_vettore (acc_y, n);
    riempi_vettore (acc_z, n);
    stampa_vettore (acc_z, n);
    
    /* Calcolo dimensione dei vettori velocità */
    dim = dimensione_vel ( acc_x, acc_y, acc_z, n, T);
    
    /* Alloco dinamicamente i vettori */
    vel_x = (double*)malloc(dim*sizeof(double));
    vel_y = (double*)malloc(dim*sizeof(double));
    vel_z = (double*)malloc(dim*sizeof(double));
    
    /* Calcolo velocità */
    calcola_vel ( acc_x, acc_y, acc_z, n,  vel_x,  vel_y, vel_z, T);

    system("pause");
}


void riempi_vettore (double *v, int size) {
     int i;
     
     srand(time(NULL));
     
     for(i=0;i<size;i++) {
     v[i]=(rand()/(float)RAND_MAX)*2.0-1.0;
       }
      }
void stampa_vettore (double *a, int size) {
     int i;
     for(i=0; i<size; i++) {
              printf ("a[%d]=%lf \n", i, a[i]);
              }
          }
          
int dimensione_vel (double *ax, double *ay, double *az, int size, double T) {
    int i, j;
    
    j=0;
    for (i=0; i<size; i++) {
        if((fabs(ax[i])>T )||fabs(ay[i]>T)||fabs(az[i]>T)){
                         j++; }
                         }
        return j;
       }
                  
void calcola_vel (double *ax, double *ay, double *az, int size, double *vx, double *vy, double *vz, double T) {
       int i, j;
       
       for(i=0; i<size; i++){
             
             if((fabs(ax[i])>T )||fabs(ay[i]>T)||fabs(az[i]>T)){
                         vx[i+1]=vx[i]+ax[i]*T;   
                         vy[i+1]=vy[i]+ay[i]*T;  
                         vz[i+1]=vz[i]+az[i]*T; 
                                                                        }
                         
                    printf("vel_x[%d]=%lf\n" , i+1, vx[i+1]); 
                    printf("vel_y[%d]=%lf\n" , i+1, vy[i+1]);
                    printf("vel_z[%d]=%lf\n" , i+1, vz[i+1]);
                            
                            }
        
}
ma qualcosa non va nel momento dell'allocazione dinamica dei tre vettori velocità. Potreste spiegarmi come posso fare a calcolarmi prima la dimensione ( attraverso una funzione che mi restituisca soltanto la dimensione) dei tre vettori al fine di allocare nel main i tre vettori?

Vi ringrazio