PDA

Visualizza la versione completa : [C] Funzione per calcolare il perimetro di un poligono


pietroA
16-02-2011, 12:07
Salve a tutti, mi servirebbe aiuto per scrivere il codice di una funzione che permetta di calcolare il perimetro di un poligono. Alla quale viene passato un vettore contenete le coordinate cartesiane dei vertici del poligono. Utilizzando strutture per la rappresentazione delle coordinate cartesiane. Penso di aver capito il funzionamento, ma ho dei grossi dubbi sul modo in cui ho lavorato con gli elementi del vettore contenete le coordinate cartesiane, io ho fatto cosi:

supponendo che las struttura sia:


typedef struct coordinate {
double x, y;
}


la funzone l ho fatta cosi:


double perimetro (struct coordinate *vertici, int n)
{
int i;
double perim, *lato = 0:

lato=(double)malloc( n sizeof (double);

/*calcolo delle misure dei lati attraverso le distanze fra i vertici*/
for (i=0; i<=n; i++)
{
if (i<n) lato[i] = sqrt( (pow(vertici.x[i+1] - vertici.x [i])) - (pow(vertici.y[i+1] - vertici.y[i])));
if (i=n) lato[i]= sqrt( (pow(vertici.x[0] - vertici.x [i])) - (pow(vertici.y[0] - vertici.y[i])));
}
for (i=0; i<=n; i++)

perim= perim + lato[i];

}
return perim;

qui spero non aver scritto troppe bestialit...
vorrei sapere sei corretto come ho lavorato con gli elementi del vettore vertici che, come ho messo sopra un vettore di tipo struct, una sintassi corretta?? o li dovrei adoperare diversamente?

Alex'87
16-02-2011, 12:14
Originariamente inviato da pietroA
vorrei sapere sei corretto come ho lavorato con gli elementi del vettore vertici che, come ho messo sopra un vettore di tipo struct, una sintassi corretta?? o li dovrei adoperare diversamente? Per sapere se il tuo programma sintatticamente corretto basta compilare. Che poi faccia quello che vuoi un altro paio di maniche.

ps: inutile che usi il tag CODE se il codice non indentato...

Laikius91
16-02-2011, 12:17
vertici.x[i+1]

Questa scrittura sbagliata, prima devi spostarti su un elemento del vettore e poi entrare nella stuttura:


vertici[i+1].x

pietroA
16-02-2011, 12:39
grazie mille, era proprio quello che no riuscivo a capire!

Loading