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