Заданы координаты вершин треугольника 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;
}

Объяснение кода листинга программы

  1. Включаются необходимые заголовочные файлы
  2. Определяется структура TPoint, которая содержит координаты точки (x,y) и ее имя (name)
  3. Создается функция CreatePoint(), которая создает точку, запрашивает ее координаты и имя
  4. Создается функция DeletePoint(), которая освобождает память, выделенную под точку
  5. Определяется функция WedgeProduct(), которая вычисляет векторное произведение двух векторов
  6. В функции main() создаются три точки A, B и C
  7. Вычисляется векторное произведение (ABx, ABy), (ACx, ACy) и (Bx-Ax, By-Ay) и сохраняется в переменную w
  8. Если w < 0, то точки выводятся в порядке A B C, иначе в порядке A C B
  9. Память, выделенная под точки, освобождается
  10. Программа ожидает нажатия клавиши, чтобы пользователь мог увидеть результат

Оцени полезность:

14   голосов , оценка 3.714 из 5
Похожие ответы