Pascak need help
Кароче такое дело: написал программу, а в ней ошибка выскакивает при определённых значения x и y, т.е. около формулы герона(проблема мб в корне, т.е. отрицательное значение ведь не ищется)
Само задание:
Даны действительный числа x1,x2,x3,y1,y2,y3.  Выяснить, принадлежит ли начало координат треугольнику (x1,y1);(x2,y2);(x3;y3)
 
Сама программа:

1
program pr_2_1;
var x1,x2,x3,y1,y2,y3,x0,y0: integer;
     dl1,dl2,dl3,dl4,dl5,dl6,p1,p2,p3,pfin,g1,g2,g3,gsum,gfin: real;
begin
  Writeln('Vvedite vershini x,y=);
  readln(x1,y2);
  writeln('vvedite B)     ;
  readln(x2,y2);
  Writeln('vvedi C );
  readln(x3,y3) ;
  x0:=0; y0:=0   ;
  dl1:=((x1-x0)*2+(y1-y0)*2)*(1/2);
  dl2:=((x2-x0)*2+(y2-y0)*2)*(1/2);
  dl3:=((x3-x0)*2+(y3-y0)*2)*(1/2);
  dl4:=((x3-x1)*2+(y3-y1)*2)*(1/2);
  dl5:=((x3-x2)*2+(y3-y2)*2)*(1/2);
  dl6:=((x2-x1)*2+(y3-y2)*2)*(1/2);
  p1:=(dl1+dl2+dl6)/2;
  g1:=sqrt((p1*(p1-dl1)*(p1-dl2)*(p1-dl3))*(1/2));
  p2:=(dl1+dl4+dl3)/2;
  g2:=sqrt((p2*(p2-dl1)*(p2-dl4)*(p2-dl3))*(1/2));
  p3:=(dl2+dl5+dl3)/2;
  g3:=sqrt((p3*(p3-dl2)*(p3-dl5)*(p3-dl3))*(1/2));
  gsum:=g1+g2+g3;
  pfin:=(dl6+dl5+dl4);
  gfin:=sqrt((pfin*(pfin-dl6)*(pfin-dl5)*(pfin-dl4))*(1/2));
 
 
  if gfin=gsum then
   writeln('to4ka s koordinatami (0,0) suwestvuet v dannom treugolnike);
    if gfin<>gsum then
   writeln('ne suwestuet nah);
   readln;
   end.

Cool story:
Я получаю координаты вершин, далее нахожу длины треугольника по этим кордам, затем ищу полупериметр треугольников(состоящих из большого, но все имеют вершину (0,0) три маленьких треугольника), складываю их и сравниваю с большик и если 3 маленьких равны большому, то и т.д и т.п.
 
Что нужно:
Как сделать, чтобы работало? )