Пусть даны координаты трех точек на плоскости. Если они могут быть вершинами тупоугольного треугольника, вычислите его площадь. Выведите длины сторон в порядке убывания — Pascal(Паскаль)

uses crt;
function Dlina(x1,y1,x2,y2:real):real;
begin
Dlina:=sqrt(sqr(x1-x2)+sqr(y1-y2));
end;
procedure DlinySt(a,b,c:real;var mx,mn,sr:real);
begin
mx:=a;
if b>mx then mx:=b;
if c>mx then mx:=c;
mn:=a;
if b<mn then mn:=b;
if c<mn then mn:=c;
sr:=a+b+c-mx-mn;
end;
function Plosh(a,b,c:real):real;
var p:real;
begin
p:=(a+b+c)/2;
Plosh:=sqrt(p*(p-a)*(p-b)*(p-c));
end;
var x1,y1,x2,y2,x3,y3,a,b,c,mx,mn,sr:real;
begin
clrscr;
repeat
writeln('Введите координаты вершин треугольника:');
writeln('1->');
readln(x1,y1);
writeln('2->');
readln(x2,y2);
writeln('3->');
readln(x3,y3);
a:=Dlina(x1,y1,x2,y2);
b:=Dlina(x1,y1,x3,y3);
c:=Dlina(x3,y3,x2,y2);
if (abs(a-b)>=c) or (a+b<=c) then
writeln('Это не треугольник! Повторите ввод.');
until (abs(a-b)<c)and(a+b>c);
DlinySt(a,b,c,mx,mn,sr);
if mn*mn+sr*sr<mx*mx then
 begin
  writeln('Это тупоугольный треугольник!');
  writeln('Его стороны в порядке убывания ',mx:0:2,' ',sr:0:2,' ',mn:0:2);
  writeln('Его площадь=',Plosh(a,b,c):0:2);
 end
else write('Это не тупоугольный треугольник!');
readln
end.

Leave a Comment

23 − = 16