Si consideri un vettore a[ ] di n elementi allocato dinamicamente e con n inserito da
tastiera, riempito di numeri casuali generati secondo la formula (rand()%1500)+1.
Supporre che ogni coppia di elementi (a[i], a[i+1]) costituiscano le coordinate (x,y) di un
punto all'interno di uno spazio bidimensionale. Eseguire le seguenti funzionalita':
1. Scrivere una funzione che copia, in due vettori di interi x[ ] e y[ ] (allocati
dinamicamente) gli elementi di a[ ] a coppie;
2. Scrivere una funzione “distanza” che calcola la distanza tra due punti, note le loro
coordinate (x0, y0) e (x1, y1);
3. Creare il vettore di reali dist[ ] (allocato dinamicamente) in cui ogni elemento iesimo e' la distanza tra il punto iesimo e il punto (i+1)esimo, supposto pero' che
tale distanza sia minore di un valore di soglia inserito da tastiera.


Ragazzi, quello che ho scritto sopra è il testo di un esercizio che sto provando a svolgere(utilizzando il dev c++).
Ho provato a svolgere i tre punti, ma qualcosa non va ( non so dove siano gli errori...) durante la fase di compilazione.
VI riporto il codice:

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

void riempi_vettore (float *v, int size);
void copia_funzione (float *a, float *x, float *y, int size);

int main (void) {
    int n, dist_size,i;
    float *a, *x, *y, soglia, *dista;
    
    
    
    printf ("Inserisce da tastiera la dimensione del vettore \n");
    scanf("%d", &n);
    
    a=(float*)malloc(n*sizeof(float));
    riempi_vettore ( a, n);
    copia_funzione ( a, x, y, n);
    
    printf (" Inserire un valore di soglia \n");
    scanf ("%f", &soglia);
    
    dist_size = crea_vettore ( x, y,  n, dista,  soglia);
     for (i = 0; i < dist_size;i++)
        printf ("dista[%d] = %f\n", i, dista[i]);
    
    
    system("pause");
}

void riempi_vettore (float *v, int size){
     int i;
     
     for (i=0; i<size; i++) {
         v[i]=(rand()%1500)+1;
         printf (" stampa vettore v[%d]=%f \n", i, v[i]);
         }
     }

void copia_funzione ( float *a, float *x, float *y, int size){
     int i,j;
     for (i=0, j=0;i<size;j++, i++) {
         x[j]=a[i];
         y[j]=a[i+1];
         printf ("  Gli elementi dei vettori sono x[%d]=%f, y[%d]=%f \n", j,x[j], j, y[j]);
         }
     
     }

double distanza ( int x0, int y0, int x1, int y1){
       
       return (sqrt((x0-x*1)*(x0-x1)+(y0-y1)*(y0-y1)));
       }
float crea_vettore ( float *x, float *y, int size, float *dist, float soglia) {
      int i, j;
      float distance;
      j=0;
      for (i=0; i<size; i++) {
          
          distance = distanza (x[i], y[i], x[i+1], y[i+1]);
          
          if (distance < soglia) {
                       dist[j]=distance;
                       j++;
                       }
                       return j;
      }
}
Il riempimento del vettor a[]con valori casuali ( attraverso la funzione riempi) va bene, tutto funziona.
I problemi principali nascono ne momento in cui devo creare i due vettori x e y con i valori di a...
Potreste spiegarmi come si deve procedere, qual è il ragionamento per poterli riempire?

Vi ringrazio.