Matrici e somme

di il
3 risposte

Matrici e somme

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])

3 Risposte

  • Re: Matrici e somme

    Ciao!! allora vedo un errore di sintassi in quella riga!!
    Hai messo sqrt[... ] non devi mettere le parentesi quadre bensi quelle tonde! sqrt è una funzione definita all'interno della math.h non un array.
  • Re: Matrici e somme

    Ciao miky
    hai ragione...
    ma adesso mi da una serie di errori che prima non mi dava:
    Cerch.c: In function ‘Cor_pol_cart’:
    Cerch.c:58:11: warning: unused variable ‘k’ [-Wunused-variable]
    /tmp/ccjTKx0t.o: nella funzione "Cor_pol_cart":
    Cerch.c:(.text+0x391): riferimento non definito a "cos"
    Cerch.c:(.text+0x3e7): riferimento non definito a "sin"
    Cerch.c:(.text+0x52e): riferimento non definito a "sqrt"
    collect2: error: ld returned 1 exit status

    cosa significa?
  • Re: Matrici e somme

    Allora leggendo il tuo messaggio di errore e l'uso della drand48() direi che stai compilando in ambiente linux e probabilmente da riga di comando...
    se usi gcc da riga di comando devi aggiungere -lm al termine della classica gcc...cioè
    gcc -o Cerch Cerch.c -lm

    la -lm serve ad esplicitare il link alla libreria matematica math.h che altrimenti non viene riconosciuta.
Devi accedere o registrarti per scrivere nel forum
3 risposte