Определите, принадлежит ли начало координат треугольнику с заданными вершинами - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Даны вещественные числа x1, y1, x2, y2, x3, y3. Определите, принадлежит ли начало координат треугольнику с вершинами (x1, y1), (x2, y2), (x3, y3).

Решение задачи: «Определите, принадлежит ли начало координат треугольнику с заданными вершинами»

textual
Листинг программы
#include <stdio.h>
 
struct point { 
    double x; 
    double y; 
};
double calc_position(struct point a, struct point b, struct point d) 
{
    return (d.x - a.x) * (b.y - a.y) - (d.y - a.y) * (b.x - a.x);
}
 
bool check_side(struct point a, struct point b, struct point c, struct point d) 
{
    return calc_position(a, b, c) * calc_position(a, b, d) >= 0;
}
 
int main() 
{
    struct point a, b, c, d;
    a.x = -9;
    a.y = 2;
    b.x = 5;
    b.y = 4;
    c.x = -3;
    c.y = -10;
    d.x = 0;
    d.y = 0;        
    printf( check_side(a,b,c,d) && check_side(b,c,a,d) && 
                  check_side(c,a,b,d) ? "Принадлежит" : "Не принадлежит");
    return 0;
}

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

  1. Включаем файл библиотек стандартного ввода/вывода
  2. Объявляем структуру point для представления точки в двумерном пространстве
  3. Определяем функцию calc_position для вычисления скалярного произведения векторов
  4. Определяем функцию check_side для проверки принадлежности точки к треугольнику
  5. В функции main создаем и инициализируем переменные структур point для представления вершин треугольника и точки, для которой проверяем принадлежность
  6. Вызываем функцию check_side с передачей всех вершин треугольника и точки, для которой проверяем принадлежность
  7. Выводим на экран результат проверки принадлежности точки к треугольнику
  8. Возвращаем 0, чтобы указать, что программа успешно завершилась

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

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

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