Salve a tutti, devo realizzare un programma in C che presi n punti casualmente in un cerchio centrato sull'orgine e raggio unitario mi calcoli la distanza tra tutti i punti,trovi la minima e la massima;
la prima parte è andata liscia, ma non riesco a calcolare le somme.
il codice:
//generatore di numeri causali all'interno di un cerchio di centro (0,0) e raggio 1.
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
#include<math.h>
void Cor_pol_cart (int n, int num, double **d, double *rho, double *theta);
int main(){
long int seed = 36547;
int i,n, num=0;
const double PI=3.14159;
double *rho, *theta, **d;
printf ("quanti sono i valori casuali? \n");
scanf("%d", &n);
rho=(double*) malloc(n*sizeof(double));
if (rho==NULL)
{
printf("\n errore: memoria non disponibile \n");
exit(1);
}
theta=(double*) malloc(n* sizeof(double));
if (theta==NULL)
{
printf("\n errore: memoria non disponibile \n");
exit(1);
}
for(i=1; i<n+1; i++) num=num+i;
printf("%d\n", num);
srand(seed);
for (i=0; i<n; i++)
{
rho=drand48();
theta=2*PI*drand48();
printf("%lf %lf\n", rho, theta);
}
printf("\n");
d=(double**)malloc(n* sizeof(double*));
for(i=0; i<num; i++)
d=(double*)malloc(n* sizeof(double));
Cor_pol_cart(n, num, d, rho, theta); // a riguardo ho una domanda: quando nell'utilizzare le funzioni (con i puntatori) devo mettere nell'argomento la "&" prima della variabile ad esempio &d??
free(rho);
free(theta);
for(i=0; i<num; i++)
free(d);
free(d);
return 0;
}
void Cor_pol_cart (int n, int num, double **d, double *rho, double *theta)
{
int i, j, k;
double x[n], y[n], sin(double theta), cos(double theta);
for (i=0; i<n; i++)
{
x=rho*cos(theta);
y=rho[i]*sin(theta[i]);
printf("%lf %lf\n", x[i], y[i]);
}
//distanze di tutti i punti con tutti i punti:
for(i=0; i<n-1; i++)
{for (j=0; j<n; j++)
{d[i][j]=sqrt[(x[i]-x[j])*(x[i]-x[j])+(y[i]-y[j])*(y[i]-y[j])];
//printf("%lf", d[k]);
}
}
}
l'errore che mi riporta il calcolatore è:
subscripted value is neither array nor pointer nor vector
al rigo in cui calcolo le distanze nel doppio ciclo for (d[i][j])