// PascalABC.NET 3.3, сборка 1600 от 23.12.2017
// Внимание! Если программа не работает, обновите версию!
uses NumLibABC;
begin
var (x1,y1):=ReadReal2('Координаты x,y точки 1 через пробел:');
var (x2,y2):=ReadReal2('Координаты x,y точки 2 через пробел:');
var (x3,y3):=ReadReal2('Координаты x,y точки 3 через пробел:');
// строим векторы
var a:=new Vector(x2-x1,y2-y1); Write('a: '); a.Println;
var b:=new Vector(x3-x2,y3-y2); Write('b: '); b.Println;
var c:=new Vector(x3-x1,y3-y1); Write('c: '); c.Println;
var (la,lb,lc):=(a.ModV,b.ModV,c.ModV); // длины векторов-сторон
if (la+lb>lc) and (la+lc>lb) and (lb+lc>la) then begin
// можно построить треугольник, ищем скалярные произведения
var L:=new List<(string,real)>;
L.Add(('a·b = ',a*b));
L.Add(('a·c = ',a*c));
L.Add(('b·c = ',b*c));
L:=L.OrderByDescending(t->t[1]).ToList; // сортировка
foreach var t in L do Writeln(t[0],t[1])
end
else Writeln('Точки не могут быть вершинами треугольника')
end.
Пример
Координаты x,y точки 1 через пробел: -5 2.4
Координаты x,y точки 2 через пробел: 0 6
Координаты x,y точки 3 через пробел: 5 -2.15
a: 5 3.6
b: 5 -8.15
c: 10 -4.55
b·c = 87.0825
a·c = 33.62
a·b = -4.34