Разработать структуру, описывающую равнобедренный треугольник на плоскости - C (СИ)
Формулировка задачи:
Помогите разработать структуру, описывающую равнобедренный треугольник на плоскости с помощью его координат
Решение задачи: «Разработать структуру, описывающую равнобедренный треугольник на плоскости»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
struct point {
double x, y;
};
struct triangle {
struct point A, B, C;
};
/* algebraic vector */
typedef struct point vector_t;
double edge_length (struct point * p1, struct point * p2) {
vector_t vec;
vec.x = p2->x - p1->x;
vec.y = p2->y - p1->y;
return sqrtl(vec.x * vec.x + vec.y * vec.y);
}
int equal_edge (struct triangle * inst) {
double a, b, c;
a = edge_length(&inst->A, &inst->B);
b = edge_length(&inst->B, &inst->C);
c = edge_length(&inst->C, &inst->A);
return a == b || a == c || b == c;
}
int main () {
struct triangle inst;
inst.A.x = 2;
inst.A.y = 2;
inst.B.x = 4;
inst.B.y = 6;
inst.C.x = 6;
inst.C.y = 2;
if (equal_edge(&inst))
fprintf(stdout, "YES\n");
else
fprintf(stdout, "NO\n");
return 0;
}
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы для работы с языком C
- Объявляем структуру point, которая представляет собой точку на плоскости
- Объявляем структуру triangle, которая представляет собой равнобедренный треугольник на плоскости
- Объявляем тип данных vector_t, который представляет собой вектор для работы с алгебраическими операциями
- Определяем функцию edge_length, которая вычисляет длину отрезка между двумя точками на плоскости
- Определяем функцию equal_edge, которая проверяет, являются ли длины всех сторон треугольника равными
- В функции main создаем экземпляр структуры triangle и инициализируем его поля значениями для примера
- Проверяем, является ли треугольник равнобедренным, и выводим соответствующее сообщение на экран
- Возвращаем 0, чтобы указать, что программа успешно завершилась