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?