Entra

View Full Version : [C] Triangoli


MinaVagante
18-03-2008, 18:20
ciao a tutti,
ho dichiarato le seguenti strutture


struct Punto
{ double X;
double Y;
double Z;
};

struct Triangolo
{ struct Punto vertice1;
struct Punto vertice2;
struct Punto vertice3;
};


perchè la funzione non viene compilata correttamente??

int funzione1(struct Triangolo vettore_triangoli[],int k)
{ int i,indice_area_minima;
double lato1,lato2,lato3,semiperimetro,area,area_minima;

for( i=0; i<k ; i++)
{ lato1=sqrt((pow(vettore_triangoli[i].vertice1.X - vettore_triangoli[i].vertice2.X, 2)) +
(pow(vettore_triangoli[i].vertice1.Y - vettore_triangoli[i].vertice2.Y, 2)) +
(pow(vettore_triangoli[i].vertice1.Z - vettore_triangoli[i].vertice2.Z, 2)));

lato2=sqrt((pow(vettore_triangoli[i].vertice1.X - vettore_triangoli[i].vertice3.X, 2)) +
(pow(vettore_triangoli[i].vertice1.Y - vettore_triangoli[i].vertice3.Y, 2)) +
(pow(vettore_triangoli[i].vertice1.Z - vettore_triangoli[i].vertice3.Z, 2)));

lato3=sqrt((pow(vettore_triangoli[i].vertice2.X - vettore_triangoli[i].vertice3.X, 2)) +
(pow(vettore_triangoli[i].vertice2.Y - vettore_triangoli[i].vertice3.Y, 2)) +
(pow(vettore_triangoli[i].vertice2.Z - vettore_triangoli[i].vertice3.Z, 2)));

semiperimetro = (lato1 + lato2 + lato3) / 2;

area = semiperimetro * (semiperimetro - lato1)
* (semiperimetro - lato2)
* (semiperimetro - lato3);
printf("Area:%lf\n",area);

if (i == 0)
{ indice_area_minima = i;
area_minima = area;
}
else
{ if(area_minima > area)
{ indice_area_minima = i;
area_minima=area;
}
}

}

return indice_area_minima;

}

praticamente ho un vettore di strutture passato alla funzione e restituire l'indice con area minima: lì dei pow mi dice
arithmetic on pointer to an incomplete type
grazie

MinaVagante
18-03-2008, 18:45
ho combinato, il prototipo della funzione lo mettevo prima di definire la struttura :D