Описать тип 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, чтобы указать, что программа успешно завершилась.