Показать сообщение отдельно
Старый 18.05.2012, 07:13   #7 (permalink)
Juliet
Member
 
Регистрация: 16.12.2011
Сообщений: 18
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Цитата:
Сообщение от Vladimir_S Посмотреть сообщение
Ну вот, как-то так. Только уж извините - с координатной сеткой возиться не стал. Очень много мороки.
Код:
Uses Graph, CRT;
Var
 x1,x2,x3,y1,y2,y3,x,y,a,b,c,c1,c2,c3:Real;
 Sum:Integer;
 Xmax,Ymax,Xmin,Ymin,Kx,Ky:Real;

Function ArcCos(z:Real):Real;
begin
 if Round(z*10000000)=10000000 then ArcCos:=0 else
 if Round(z*10000000)=-10000000 then ArcCos:=Pi else
    ArcCos:=(Pi/2)-ArcTan(z/SQRT(1-z*z));
end;

Function RadGr(t:Real):Real;
begin
  RadGr:=(t/Pi)*180;
end;

Function Angle(d1,d2,d3:Real):Real;
begin
 Angle:=ArcCos((Sqr(d1)+Sqr(d2)-Sqr(d3))/(d1*d2*2));
end;

Procedure Search_MinMax(v1,v2,v3,v4:real; var Vmin:real; var Vmax:real);
begin
 Vmin:=v1;
 if v2<Vmin then Vmin:=v2;
 if v3<Vmin then Vmin:=v3;
 if v4<Vmin then Vmin:=v4;
 Vmax:=v1;
 if v2>Vmax then Vmax:=v2;
 if v3>Vmax then Vmax:=v3;
 if v4>Vmax then Vmax:=v4;
end;

Begin
 Write('x1 = ');
 Readln(x1);
 Write('y1 = ');
 Readln(y1);
 Write('x2 = ');
 Readln(x2);
 Write('y2 = ');
 Readln(y2);
 Write('x3 = ');
 Readln(x3);
 Write('y3 = ');
 Readln(y3);
 a:=Sqrt(Sqr(x2-x3)+Sqr(y2-y3));
 b:=Sqrt(Sqr(x1-x3)+Sqr(y1-y3));
 c:=Sqrt(Sqr(x1-x2)+Sqr(y1-y2));
 Writeln('Point:');
 Write('x = ');
 Readln(x);
 Write('y = ');
 Readln(y);
 Writeln;
 c1:=Sqrt(Sqr(x-x1)+Sqr(y-y1));
 c2:=Sqrt(Sqr(x-x2)+Sqr(y-y2));
 c3:=Sqrt(Sqr(x-x3)+Sqr(y-y3));
 Sum:=Round(RadGr(Angle(c1,c2,c)+Angle(c2,c3,a)+Angle(c1,c3,b)));
 Writeln(Sum=360);
 Writeln('Press "Enter" to show the picture...');
 Readln;
 Search_MinMax(x1,x2,x3,x,Xmin,Xmax);
 Search_MinMax(y1,y2,y3,y,Ymin,Ymax);
 InitGraph(...); {ТУТ УЖ ВЫ САМИ}
 Kx:=0.8*GetMaxX/(Xmax-Xmin);
 Ky:=0.8*GetMaxY/(Ymax-Ymin);
 SetLineStyle(SolidLn,0,ThickWidth);
 MoveTo(Round(0.1*GetMaxX+(x1-Xmin)*Kx),Round(0.9*GetMaxY-(y1-Ymin)*Ky));
 LineTo(Round(0.1*GetMaxX+(x2-Xmin)*Kx),Round(0.9*GetMaxY-(y2-Ymin)*Ky));
 LineTo(Round(0.1*GetMaxX+(x3-Xmin)*Kx),Round(0.9*GetMaxY-(y3-Ymin)*Ky));
 LineTo(Round(0.1*GetMaxX+(x1-Xmin)*Kx),Round(0.9*GetMaxY-(y1-Ymin)*Ky));
 Circle(Round(0.1*GetMaxX+(x-Xmin)*Kx),Round(0.9*GetMaxY-(y-Ymin)*Ky),2);
 ReadKey;
 CloseGraph;
End.
Спасибо)) вы меня спасли))
Juliet вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070