Составить программу для вычисления площади пятиугольника, заданного координатами вершин - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Ребят, помогите пожалуйста! Составить программу для вычисления площади пятиугольника, заданного координатами вершин

Решение задачи: «Составить программу для вычисления площади пятиугольника, заданного координатами вершин»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <assert.h>
  3.  
  4. struct point {
  5.     double x, y;
  6. };
  7.  
  8. double polygon_area(struct point points[], unsigned n);
  9. double deter2(struct point pt1, struct point pt2);
  10.  
  11. /* заданы координаты вершин пятиугольника,
  12.    посчитать площадь пятиугольника */
  13. int main(void)
  14. {
  15.     struct point points[5] = {
  16.         { 0.0, 0.0 },
  17.         { 0.0, 4.0 },
  18.         { 3.0, 4.0 },
  19.         { 5.0, 1.0 },
  20.         { 2.0, 0.0 }
  21.     };
  22.    
  23.     printf("Area: %g\n", polygon_area(points, 5));
  24.     return 0;
  25. }
  26.  
  27. /* polygon_area: по заданным точкам points в количестве n
  28.                  подсчитывает площадь выпуклого многоугольника */
  29. double polygon_area(struct point points[], unsigned n)
  30. {
  31.     double area;
  32.     int i;
  33.    
  34.     assert(n > 2 && "incorrect number of points");
  35.     area = 0.0;
  36.     for (i = 0; i < n - 1; i++)
  37.         /* инв: в area - сумма определителей, составленных
  38.                 из координат пройденных левых точек
  39.                 и точек справа от них;
  40.                 текущая точка - новая левая точка */
  41.         area += deter2(points[i], points[i + 1]);
  42.     area += deter2(points[i], points[0]);
  43.     if (area < 0.0)
  44.         area = -area;
  45.     area /= 2.0;
  46.     return area;
  47. }
  48.  
  49. /* deter2: по заданным двум точкам p1 и p2
  50.            подсчитывает определитель второго порядка */
  51. double deter2(struct point pt1, struct point pt2)
  52. {
  53.     return pt1.x * pt2.y - pt1.y * pt2.x;
  54. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 3.692 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы