В
Все
Б
Биология
Б
Беларуская мова
У
Українська мова
А
Алгебра
Р
Русский язык
О
ОБЖ
И
История
Ф
Физика
Қ
Қазақ тiлi
О
Окружающий мир
Э
Экономика
Н
Немецкий язык
Х
Химия
П
Право
П
Психология
Д
Другие предметы
Л
Литература
Г
География
Ф
Французский язык
М
Математика
М
Музыка
А
Английский язык
М
МХК
У
Українська література
И
Информатика
О
Обществознание
Г
Геометрия
artemgavrev
artemgavrev
24.11.2022 13:26 •  Информатика

Пусть даны вещественные числа x^1, x^2, x^3, y^1, y^2, y^3 принадлежит ли начало координат треугольнику с вершинами (x^1,y^1) (x^2,y^2) (x^3, y^3)

Показать ответ
Ответ:
vorobeva85ramon
vorobeva85ramon
07.07.2020 15:52
Var
  a:array[1..3,1..2]of real;
  b:array[1..3]of real; //массив для координат пересечения сторон с ОХ
  i,j,z:integer;
// (y1-y2)x+(x2-x1)y+(x1y2-x2y1)=0 - ур-е прямой, прохоходящей через 2 точки
// тогда x=(x2y1-x1y2)/(y1-y2) - координата ее пересечения с осью х  
// найдем координаты пересечения сторон с осью х
function cross(x1,x2,y1,y2:real):real;
begin
result:=(x2*y1-x1*y2)/(y1-y2);
if ((result>x1) and (result>x2)) or ((result<x1) and (result<x2)) then
  result:=1 //это точка пересечения не самой стороны, а ее продолжения
                //поскольку в дальнейшем нам нужны будут знаки координат,           
                //ей приписываем положительной значение, чтобы она не влияла
                //на конечный результат
end;

begin
for i:=1 to 3 do
  begin
  writeln('Введите координаты х,у вершины:');
  readln(a[i,1],a[i,2]);
  end;
z:=1;
for i:=1 to 3 do
  begin
  j:=i+1;
  if j>3 then j:=1;
  b[i]:=cross(a[i,1],a[j,1],a[i,2],a[j,2]);
  z:=sign(b[i])*z;
  end;
write('Начало координат ');
if z<0 then writeln('принадлежит треугольнику')
  else writeln('не принадлежит треугольнику');
end.
0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота