Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
58
Добавлен:
10.05.2014
Размер:
2.91 Кб
Скачать
program Treugolnik;

procedure InputCoordinates(var Xa,Ya,Xb,Yb,Xc,Yc:real);
begin
write('‚ўҐ¤ЁвҐ Є®®а¤Ё­ вг X в®зЄЁ A: ');
readln(Xa);
write('‚ўҐ¤ЁвҐ Є®®а¤Ё­ вг Y в®зЄЁ A: ');
readln(Ya);

write('‚ўҐ¤ЁвҐ Є®®а¤Ё­ вг X в®зЄЁ B: ');
readln(Xb);
write('‚ўҐ¤ЁвҐ Є®®а¤Ё­ вг Y в®зЄЁ B: ');
readln(Yb);

write('‚ўҐ¤ЁвҐ Є®®а¤Ё­ вг X в®зЄЁ C: ');
readln(Xc);
write('‚ўҐ¤ЁвҐ Є®®а¤Ё­ вг Y в®зЄЁ C: ');
readln(Yc);
end;
procedure ComputeDistances(Xa,Ya,Xb,Yb,Xc,Yc:real;var AB,AC,BC:real);
begin
AB:=sqrt( sqr(Xa-Xb) + sqr(Ya-Yb) );
AC:=sqrt( sqr(Xa-Xc) + sqr(Ya-Yc) );
BC:=sqrt( sqr(Xb-Xc) + sqr(Yb-Yc) );
end;
procedure ComputeArea(AB,AC,BC:real;var Area:real);
var HalfP:real;
begin
HalfP:=( AB+AC+BC )/2;
Area:=sqrt( HalfP * (HalfP-AB) * (HalfP-AC) * (HalfP-BC) );
end;
function ComputeAngle(BC,AB,AC:real):real;
var
AngleACos,AngleA:real;
begin
AngleACos:=( sqr(AB)+sqr(AC)-sqr(BC) )/( 2*AB*AC );

if AngleACos = 0 then
AngleA:=PI/2
else
AngleA:=arctan( sqrt( 1/sqr(AngleACos) -1 ) );

if AngleACos<0 then
AngleA:=PI-AngleA;
ComputeAngle:=AngleA * (180/PI);
end;
procedure ComputeAngles(AB,AC,BC:real;var AngleA,AngleB,AngleC:real);
begin
AngleA:=ComputeAngle(BC,AC,AB);
AngleB:=ComputeAngle(AC,AB,BC);
AngleC:=ComputeAngle(AB,BC,AC);
end;
procedure ComputeHeights(AB,AC,BC,Area:real;var HeightA,HeightB,HeightC:real);
begin
HeightA:=( 2*Area )/BC;
HeightB:=( 2*Area )/AC;
HeightC:=( 2*Area )/AB;
end;
procedure OutputData(AB,AC,BC,Area,AngleA,AngleB,AngleC,HeightA,HeightB,HeightC:real);
begin
writeln;
write('Cв®а®­  AB=',AB:0:2);
write(', AC=',AC:0:2);
writeln(', BC=',BC:0:2);

writeln('Џ«®й ¤м S=',Area:0:2);

write('“Ј®« BAC=',AngleA:0:2);
write(', ABC=',AngleB:0:2);
writeln(', ACB=',AngleC:0:2);

write('‚лб®в  AA1=',HeightA:0:2);
write(', BB1=',HeightB:0:2);
writeln(', CC1=',HeightC:0:2);
writeln;
end;

var
Xa,Ya,Xb,Yb,Xc,Yc:real;
Ka,Kb,Kc:real;
AB,AC,BC:real;
Area:real;
AngleA,AngleB,AngleC:real;
HeightA,HeightB,HeightC:real;
begin
{ўў®¤Ё¬ Є®®а¤Ё­ вл}
InputCoordinates(Xa,Ya,Xb,Yb,Xc,Yc);
{Ґб«Ё ваҐгЈ®«м­ЁЄ ¬®¦­® ᮧ¤ вм, в®}
if ( (Xa-Xb)*(Ya-Yc) )<>( (Ya-Yb)*(Xa-Xc) ) then
begin
{бзЁв Ґ¬ а ббв®п­ЁҐ ¬Ґ¦¤г в®зЄ ¬Ё}
ComputeDistances(Xa,Ya,Xb,Yb,Xc,Yc,AB,AC,BC);
{бзЁв Ґ¬ Ї«®й ¤м}
ComputeArea(AB,AC,BC,Area);
{гЈ«л ваҐгЈ®«м­ЁЄ }
ComputeAngles(AB,AC,BC,AngleA,AngleB,AngleC);
{ўлб®вл ваҐгЈ®«м­ЁЄ }
ComputeHeights(AB,AC,BC,Area,HeightA,HeightB,HeightC);
{ўлў®¤Ё¬ १г«мв вл}
OutputData(AB,AC,BC,Area,AngleA,AngleB,AngleC,HeightA,HeightB,HeightC);
end
{Ё­ зҐ ўлў®¤Ёвбп а㣠⥫мбвў®}
else
writeln('’ Є®© ваҐгЈ®«м­ЁЄ Ї®бва®Ёвм ­Ґ«м§п.');

writeln('Ќ ¦ вм <ENTER> ¤«п ўл室  Ё«Ё «оЎго ¤агЈго Є« ўЁиг ¤«п ­Ґ ўл室 .');
readln;
end.