Описать тип 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
Листинг программы
#include <math.h>       // hypot
#include <stdio.h>      // printf
 
typedef struct point {
    double x;
    double y;
} Point;
 
void Point_Init(Point* const this, const double x, const double y)
{
    this->x = x;
    this->y = y;
}
 
double Point_Distance(const Point* const this, const Point* const p)
{
    return hypot(this->x - p->x, this->y - p->y);
}
 
typedef struct triangle {
    Point a;
    Point b;
    Point c;
} Triangle;
 
void Triangle_Init(Triangle* const this, const Point* const a,
                                         const Point* const b,
                                         const Point* const c)
{
    this->a = *a;
    this->b = *b;
    this->c = *c;
}
 
double Triangle_Perimeter(const Triangle* const this)
{
    return Point_Distance(&(this->a), &(this->b))
         + Point_Distance(&(this->b), &(this->c))
         + Point_Distance(&(this->c), &(this->a));
}
 
int main(void)
{
    Point a, b, c, d;
    Point_Init(&a, 1.0, 4.0);
    Point_Init(&b, 1.0, 1.0);
    Point_Init(&c, 5.0, 4.0);
    Point_Init(&d, -2.0, 1.0);
 
    Triangle abc, abd, acd;
    Triangle_Init(&abc, &a, &b, &c);
    Triangle_Init(&abd, &a, &b, &d);
    Triangle_Init(&acd, &a, &c, &d);
 
    printf("Perimeter ABC = %f\nPerimeter ABD = %f\nPerimeter ACD = %f\n",
           Triangle_Perimeter(&abc),
           Triangle_Perimeter(&abd),
           Triangle_Perimeter(&acd));
    return 0;
}

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

  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
Похожие ответы