program triangle;
uses crt;
{--Функция для проверки принадлежности стороны треугольника одной из осей и
--для проверки нахождения точки треугольника в пересечении осей--}
function ch(a:real; b:real):boolean;
begin
if (a=0) and (b=0) then ch:=true
else ch:=false;
end;
{--Функция для проверки (!)пересечения стороны треугольника с одной из осей--}
function int(x1:real;x2:real;y1:real;y2:real):byte;
var
res:integer;
begin
res:=0;
if x1*x2<0 then inc(res);
if y1*y2<0 then inc(res);
int:=res;
end;
{--Функция для проверки принадлежности стороны треугольника прямой, проходящей через центр координат--}
function cen(x1:real;x2:real;y1:real;y2:real):boolean;
begin
if (x1=-x2) and (y1=-y2) and (abs(x1)=abs(y1)) and (abs(x2)=abs(y2)) then cen:=true
else cen:=false;
end;
var
sum:byte;
x1,x2,x3,y1,y2,y3:real;
begin
writeln('Введите координаты точек треугольника: ');
write('x1=',x1);
write('y1=',y1);
write('x2=',x2);
write('y2=',y2);
write('x3=',x3);
write('y3=',y3);
{--Если получилось так, что одна из сторон треугольника лежит на оси}
if ch(x1,x2) or ch(x1,x3) or ch(x2,x3) or ch(y1,y2) or ch(y2,y3) or ch(y1,y3) then
writeln('Бесконечное множество') {то он имеет бесконечное множество точек пересечения с ними}
else begin {Иначе это множество конечно и можно считать}
sum:=0; {Переменная для хранения результата}
sum:=int(x1,x2,y1,y2)+int(x2,x3,y2,y3)+int(x3,x1,y3,y1); {Сумма пересечений каждого из отрезков прямыми}
if ch(x1,y1) or ch(x2,y2) or ch(x3,y3) then {Если есть одна точка которая лежит в центре координатной плоскости
то больше на осях точек концов отрезков быть не может. Значит прибавляем к результатут единицу}
sum:=sum+1
else begin
{На каждой оси может быть только по одной точке концов отрезков сторон треугольника. Проверяем. Если есть, то
Увеличиваем результат на единицу}
if (x1=0) or (x2=0) or (x3=0) then inc(sum);
if (y1=0) or (y2=0) or (y3=0) then inc(sum);
end;
{Если одна из сторон треугольника лежит на прямой, проходящей через (0;0), то она имеет только одно пересечение
с осями координат то удалим из результата единицу, которую мы туда написали лишнюю. Заметим такая сторона единственная}
if cen(x1,x2,y1,y2) or cen(x2,x3,y2,y3) or cen(x1,x3,y1,y3) then dec(sum);
{Разобрали все случаи расположения треугольника, пишем ответ:}
writeln(sum);
end;
readkey;
end.