Заданы координаты вершин треугольника ABC на плоскости. Вывести их в порядке обхода по часовой стрелке - C (СИ)
Формулировка задачи:
Заданы координаты вершин треугольника ABC на плоскости. Вывести их в порядке обхода по часовой стрелке (для проверки достаточно рассмотреть знаки внутренних углов). Обход начинать с вершины A.
Формат входных данных: [x_a] [y_a] [x_b] [y_b] [x_c] [y_c]. Координаты задаются целыми числами в диапазоне ±1000.
Пример: 1 2 30 3 2 1
Формат выходных данных: [название первой вершины] [пробел] [название второй вершины] [пробел] [название третьей вершины].
Пример: A C B
Теорема косинусов: с^2 = a^2 + b^2 – 2*a*b*cosγ
Помогите решить плиз очень нужно срочно!
Решение задачи: «Заданы координаты вершин треугольника ABC на плоскости. Вывести их в порядке обхода по часовой стрелке»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
typedef struct _TPoint
{ int x,y;
char name;
} TPoint;
TPoint *CreatePoint (char name)
{ TPoint *p = (TPoint*) malloc (sizeof(TPoint));
p->name = name;
printf ("%c:\n", name);
printf("\tx = ");
scanf("%d", &p->x);
printf("\ty = ");
scanf("%d", &p->y);
fflush(stdin);
return p;
}
void DeletePoint (TPoint *p)
{ free (p);
}
int WedgeProduct (int ABx, int ABy, int ACx, int ACy)
{ return ABx * ACy - ACx * ABy;
}
int main()
{ TPoint *A, *B, *C;
A = CreatePoint ('A');
B = CreatePoint ('B');
C = CreatePoint ('C');
if (WedgeProduct (B->x - A->x, B->y - A->y, C->x - A->x, C->y - A->y) < 0)
printf("A B C");
else
printf("A C B");
DeletePoint (A);
DeletePoint (B);
DeletePoint (C);
getchar();
return 0;
}
Объяснение кода листинга программы
- Включаются необходимые заголовочные файлы
- Определяется структура TPoint, которая содержит координаты точки (x,y) и ее имя (name)
- Создается функция CreatePoint(), которая создает точку, запрашивает ее координаты и имя
- Создается функция DeletePoint(), которая освобождает память, выделенную под точку
- Определяется функция WedgeProduct(), которая вычисляет векторное произведение двух векторов
- В функции main() создаются три точки A, B и C
- Вычисляется векторное произведение (ABx, ABy), (ACx, ACy) и (Bx-Ax, By-Ay) и сохраняется в переменную w
- Если w < 0, то точки выводятся в порядке A B C, иначе в порядке A C B
- Память, выделенная под точки, освобождается
- Программа ожидает нажатия клавиши, чтобы пользователь мог увидеть результат