Цитата:
Сообщение от совушка
1)Пусть даны три числа. Если они могут быть длинами сторон треугольника, определите его вид (прямоугольный, тупоугольный, остроугольный). Вычислите длины его высот и напечатайте их в порядке убывания.
|
Код:
Var
a,b,c,Ha,Hb,Hc,p,S,Alpha,Beta,Gamma,h1,h2,h3:Real;
function ArcCos(X:real):real;
begin
if Round(X*10000000)=10000000 then ArcCos:=0 else
if Round(X*10000000)=-10000000 then ArcCos:=Pi else
ArcCos:=(Pi/2)-ArcTan(X/Sqrt(1-X*X));
end;
Begin
Write('a= ');
Readln(a);
Write('b= ');
Readln(b);
Write('c= ');
Readln(c);
If ((a+b)<=c) or ((a+c)<=b) or ((b+c)<=a) then
Writeln('It can not be a triangle!')
else
begin
Alpha:=ArcCos((b*b+c*c-a*a)/(2*b*c));
Beta:=ArcCos((a*a+c*c-b*b)/(2*a*c));
Gamma:=ArcCos((a*a+b*b-c*c)/(2*a*b));
If (Round(Alpha*1000)=Round(Pi*500)) or
(Round(Beta*1000)=Round(Pi*500)) or
(Round(Gamma*1000)=Round(Pi*500)) then
Writeln('Right') else
If (Alpha>Pi/2) or (Beta>Pi/2) or (Gamma>Pi/2) then
Writeln('Obtuse') else
Writeln('Acute');
p:=(a+b+c)/2;
S:=Sqrt(p*(p-a)*(p-b)*(p-c));
Ha:=S*2/a;
Hb:=S*2/b;
Hc:=S*2/c;
If (Ha>Hb) and (Ha>Hc) then
begin
h1:=Ha;
if Hb>Hc then
begin
h2:=Hb;
h3:=Hc;
end else
begin
h2:=Hc;
h3:=Hb;
end;
end
else
If (Hb>Ha) and (Hb>Hc) then
begin
h1:=Hb;
if Ha>Hc then
begin
h2:=Ha;
h3:=Hc;
end else
begin
h2:=Hc;
h3:=Ha;
end;
end
else
begin
h1:=Hc;
if Ha>Hb then
begin
h2:=Ha;
h3:=Hb;
end else
begin
h2:=Hb;
h3:=Ha;
end;
end;
Writeln('H1 = ',h1:0:3);
Writeln('H2 = ',h2:0:3);
Writeln('H3 = ',h3:0:3);
end;
Readln
End.