Написать программу для паскаля, которая по трем парам (х,у) введенных с клавиатуры...

0 голосов
18 просмотров

Написать программу для паскаля, которая по трем парам (х,у) введенных с клавиатуры координат определит, находится ли начало координат внутри треугольника, заданного этими тремя вершинами


Информатика (27 баллов) | 18 просмотров
0

Далеко не такая простая задачка, как кажется. В алгоритме вывод математический приличного размера.

Дан 1 ответ
0 голосов

{ входит ли начало координат в треугольник }
type point = record
       x,y: real;
     end;
var s0,s: real;
    pts: array [1..3] of point;
    i: integer;
begin
{ считывание координат точек}
  for i:=1 to 3 do
   begin
     writeln('точка ',i,'  x ',' y ');
     write('         ');
     readln(pts[i].x,pts[i].y);
  end;
  { вычисляем площадь треугольника ABC  через векторное произведение }
  s0:=(pts[2].x-pts[1].x)*(pts[3].y-pts[1].y) - 
      (pts[3].x-pts[1].x)*(pts[2].y-pts[1].y);
  s0:=abs(s0);
{ вычисляем сумму площадей треугольников  из начала координат }
  s:=abs(pts[1].x*pts[2].y - pts[2].x*pts[1].y);
  s:=s+abs(pts[2].x*pts[3].y - pts[3].x*pts[2].y);
{ если  s > s0 , то начало координат вне треугольника }
  if s>s0 then writeln('начало координат вне треугольника')
  else writeln('начало координат внутри треугольника');
end.

На тестовой задаче:
точка 1  x  y 
             -1 -3
точка 2  x  y 
             -3 2
точка 3  x  y 
              4 3
начало координат внутри треугольника

точка 1  x  y
             -2 0
точка 2  x  y
              -3 2
точка 3  x  y
              4 3
начало координат вне треугольника

 

(9.7k баллов)