Составить программу для вычисления площади пятиугольника, заданного координатами вершин - C (СИ)
Формулировка задачи:
Ребят, помогите пожалуйста!
Составить программу для вычисления площади пятиугольника, заданного координатами вершин
Решение задачи: «Составить программу для вычисления площади пятиугольника, заданного координатами вершин»
textual
Листинг программы
#include <stdio.h>
#include <assert.h>
struct point {
double x, y;
};
double polygon_area(struct point points[], unsigned n);
double deter2(struct point pt1, struct point pt2);
/* заданы координаты вершин пятиугольника,
посчитать площадь пятиугольника */
int main(void)
{
struct point points[5] = {
{ 0.0, 0.0 },
{ 0.0, 4.0 },
{ 3.0, 4.0 },
{ 5.0, 1.0 },
{ 2.0, 0.0 }
};
printf("Area: %g\n", polygon_area(points, 5));
return 0;
}
/* polygon_area: по заданным точкам points в количестве n
подсчитывает площадь выпуклого многоугольника */
double polygon_area(struct point points[], unsigned n)
{
double area;
int i;
assert(n > 2 && "incorrect number of points");
area = 0.0;
for (i = 0; i < n - 1; i++)
/* инв: в area - сумма определителей, составленных
из координат пройденных левых точек
и точек справа от них;
текущая точка - новая левая точка */
area += deter2(points[i], points[i + 1]);
area += deter2(points[i], points[0]);
if (area < 0.0)
area = -area;
area /= 2.0;
return area;
}
/* deter2: по заданным двум точкам p1 и p2
подсчитывает определитель второго порядка */
double deter2(struct point pt1, struct point pt2)
{
return pt1.x * pt2.y - pt1.y * pt2.x;
}