Дан треугольник с координатами (-1;0) (1;0) (0;1) Определить принадлежит ли точка (-5;5) этому треугольнику - C (СИ)
Формулировка задачи:
Помогите, пожалуйста!
Решение задачи: «Дан треугольник с координатами (-1;0) (1;0) (0;1) Определить принадлежит ли точка (-5;5) этому треугольнику»
textual
Листинг программы
#include <stdio.h> #include <locale.h> int main(){ setlocale(LC_ALL, "rus"); int i,k; float trX[3]; float trY[3]; float bufx, bufy; float dot[2]; printf("введите координаты вершин треугольника:\n ВВОДИТЬ ЧЕРЕЗ ПРОБЕЛ!!!\n\nпервая вершина (x y):"); scanf("%f %f", &trX[0], &trY[0]); printf("вторая вершина (x y):"); scanf("%f %f", &trX[1], &trY[1]); printf("третья вершина (x y):"); scanf("%f %f", &trX[2], &trY[2]); printf("координаты точки (x y):"); scanf("%f %f", &dot[0], &dot[1]); float S,S1,S2,S3; S = 0.5*((trX[0]-trX[2])*(trY[1]-trY[2])-(trX[1]-trX[2])*(trY[0]-trY[2])); if(S<0) S*=(-1); S1 = 0.5*((dot[0]-trX[2])*(trY[1]-trY[2])-(trX[1]-trX[2])*(dot[1]-trY[2])); if(S1<0) S1*=(-1); S2 = 0.5*((trX[0]-trX[2])*(dot[1]-trY[2])-(dot[0]-trX[2])*(trY[0]-trY[2])); if(S2<0) S2*=(-1); S3 = 0.5*((trX[0]-dot[0])*(trY[1]-dot[1])-(trX[1]-dot[0])*(trY[0]-dot[1])); if(S3<0) S3*=(-1); if (S==S1+S2+S3) printf("принадлежит треугольнику\n"); else printf("не принадлежит треугольнику\n"); }
Объяснение кода листинга программы
- Подключение необходимых библиотек для работы с языком программирования C.
- Установка русской локали для вывода информации на экран.
- Объявление переменных: i, k, bufx, bufy, dot, S, S1, S2, S3 и trX, trY.
- Ввод координат вершин треугольника и координат точки с помощью функции scanf.
- Вычисление площади треугольника по формуле Герона.
- Вычисление значений S1, S2 и S3, представляющих собой скалярные произведения отрезков, соединяющих вершины треугольника с искомой точкой.
- Вычисление значения S, равного сумме S1, S2 и S3.
- Проверка принадлежности точки к треугольнику по условию (S==S1+S2+S3).
- Вывод на экран соответствующего сообщения о принадлежности или непринадлежности точки к треугольнику.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д