Описать тип 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;
- }
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы
и . - Объявляем структуру Point с полями вещественного типа X и Y.
- Определяем функцию Point_Init для инициализации полей структуры Point.
- Определяем функцию Point_Distance для вычисления расстояния между двумя точками на плоскости.
- Объявляем структуру Triangle с полями трех точек типа Point.
- Определяем функцию Triangle_Init для инициализации полей структуры Triangle.
- Определяем функцию Triangle_Perimeter для вычисления периметра треугольника.
- В функции main создаем четыре точки a, b, c, d и инициализируем их координатами.
- Создаем три треугольника abc, abd, acd и инициализируем их точками.
- Выводим периметры треугольников на экран.
- Возвращаем 0, чтобы указать, что программа успешно завершилась.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д