Описать тип Point — запись с полями вещественного типа X и Y (координаты точки на плоскости) — и функцию Leng - C (СИ)

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

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

Описать тип Point — запись с полями вещественного типа X и Y (координаты точки на плоскости) — и функцию Leng(A, B) вещественного типа, находящую длину отрезка AB на плоскости по координатам его концов: (A и B — параметры типа Point). Используя тип Point и функцию Leng, описать тип Triangle — запись с полями A, B, C типа Point (вершины треугольника) — и функцию Perim(T) вещественного типа, находящую периметр треугольника T (T — параметр типа Triangle). С помощью этой функции найти периметры треугольников ABC, ABD, ACD, если даны координаты точек A, B, C, D. Всю голову сломал, помогите пожалуйста.

Решение задачи: «Описать тип Point — запись с полями вещественного типа X и Y (координаты точки на плоскости) — и функцию Leng»

textual
Листинг программы
  1. #include <math.h>       // hypot
  2. #include <stdio.h>      // printf
  3.  
  4. typedef struct point {
  5.     double x;
  6.     double y;
  7. } Point;
  8.  
  9. void Point_Init(Point* const this, const double x, const double y)
  10. {
  11.     this->x = x;
  12.     this->y = y;
  13. }
  14.  
  15. double Point_Distance(const Point* const this, const Point* const p)
  16. {
  17.     return hypot(this->x - p->x, this->y - p->y);
  18. }
  19.  
  20. typedef struct triangle {
  21.     Point a;
  22.     Point b;
  23.     Point c;
  24. } Triangle;
  25.  
  26. void Triangle_Init(Triangle* const this, const Point* const a,
  27.                                          const Point* const b,
  28.                                          const Point* const c)
  29. {
  30.     this->a = *a;
  31.     this->b = *b;
  32.     this->c = *c;
  33. }
  34.  
  35. double Triangle_Perimeter(const Triangle* const this)
  36. {
  37.     return Point_Distance(&(this->a), &(this->b))
  38.          + Point_Distance(&(this->b), &(this->c))
  39.          + Point_Distance(&(this->c), &(this->a));
  40. }
  41.  
  42. int main(void)
  43. {
  44.     Point a, b, c, d;
  45.     Point_Init(&a, 1.0, 4.0);
  46.     Point_Init(&b, 1.0, 1.0);
  47.     Point_Init(&c, 5.0, 4.0);
  48.     Point_Init(&d, -2.0, 1.0);
  49.  
  50.     Triangle abc, abd, acd;
  51.     Triangle_Init(&abc, &a, &b, &c);
  52.     Triangle_Init(&abd, &a, &b, &d);
  53.     Triangle_Init(&acd, &a, &c, &d);
  54.  
  55.     printf("Perimeter ABC = %f\nPerimeter ABD = %f\nPerimeter ACD = %f\n",
  56.            Triangle_Perimeter(&abc),
  57.            Triangle_Perimeter(&abd),
  58.            Triangle_Perimeter(&acd));
  59.     return 0;
  60. }

Объяснение кода листинга программы

  1. Включаем необходимые заголовочные файлы и .
  2. Объявляем структуру Point с полями вещественного типа X и Y.
  3. Определяем функцию Point_Init для инициализации полей структуры Point.
  4. Определяем функцию Point_Distance для вычисления расстояния между двумя точками на плоскости.
  5. Объявляем структуру Triangle с полями трех точек типа Point.
  6. Определяем функцию Triangle_Init для инициализации полей структуры Triangle.
  7. Определяем функцию Triangle_Perimeter для вычисления периметра треугольника.
  8. В функции main создаем четыре точки a, b, c, d и инициализируем их координатами.
  9. Создаем три треугольника abc, abd, acd и инициализируем их точками.
  10. Выводим периметры треугольников на экран.
  11. Возвращаем 0, чтобы указать, что программа успешно завершилась.

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


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

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

6   голосов , оценка 3.667 из 5

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

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

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