PDA

View Full Version : Perimetro di un poligono in C


giunas
13-09-2016, 14:40
#include <stdio.h>
#include <math.h>
#define SIZE 5

struct puntopol {
double x;
double y;
};

typedef struct puntopol Poli;

void func( Poli a[], int size );


int main()
{
int i;
double valuex;
double valuey;
Poli vertici[SIZE] = {0};

for( i = 0; i <= SIZE -1; i++ ) {

scanf("%lf%lf", &valuex, &valuey);

vertici[i].x = valuex;
vertici[i].y = valuey;
}

func( vertici, SIZE);

return 0;
}

void( Poli a[], int size )
{
int i;
double tot = 0;
double delta1;
double delta2;

for( i = 0; i <= size - 1; i++ ) {

if( i <= 3 ) {

delta1 = a[i].x - a[i+1].x;
delta2 = a[i].y - a[i+1].y;
}

else if( i == 4 ) {

delta1 = a[i].x - a[0].x;
delta2 = a[i].y - a[0].y;
}

tot += sqrt((delta1*delta1) + (delta2*delta2));
}

printf("Il perimetro è: %.2f", tot);
}

Devo creare un programma in C che calcoli il perimetro di un poligono irregolare. L'esercizio chiede che venga passato alla funzione un vettore di strutture. Ho fatto questo programmino ma il compilatore mi dà questo errore:

ese.c:35:12: error: expected ‘)’ before ‘a’
void( Poli a[], int size )

Cosa sbaglio?

Vi ringrazio in anticipo

gianmpu
13-09-2016, 15:14
In C una funzione viene dichiarata usando tre elementi
tipo_del_valore_da_restituire nome_della_funzione (lista_dei_parametri)
Se tu scrivi
void( Poli a[], int size )
uno dei tre elementi citati manca. ;)

giunas
13-09-2016, 15:21
In C una funzione viene dichiarata usando tre elementi
tipo_del_valore_da_restituire nome_della_funzione (lista_dei_parametri)
Se tu scrivi

uno dei tre elementi citati manca. ;)

Che errore stupido, cavolo :muro: ! Era da ieri pomeriggio che cercavo di capire l'errore, grazie milleeeee!

Edit: manca il nome della funzione, per chi magari passasse da qui e volesse capire

gianmpu
13-09-2016, 15:38
Di nulla. Tieni conto che il tuo è un errore "sintattico" cioè di sintassi non corretta del programma che il compilatore non riesce a comprendere e il compilatore stesso ti segnala già il punto in cui c'è il problema.
Andando avanti, ti troverai a dover scovare gli errori semantici, per i quali, invece, la risoluzione non è immediata come per gli errori sintattici.
Quando si impara a programmare in C, quindi, bisogna mettere in conto una certa quantità di tempo persa a capire e risolvere gli errori. ;)