ВУЗ:
Составители:
Рубрика:
OutTextXY(2, j-5, Coord);
Line(28, j, 30, j)
end;
For i:=1 to 29 do {нанесение делений и числовых отметок на ось OX}
begin Str(20*i,Coord); j:=i*20+30;
If Odd(i) then OutTextXY(j-8, 436,Coord); Line(j,430, j,432)
end;
SetViewPort(31,4,630,429,FALSE) {установка текущего графического окна}
End; {of Drawing_Axes}
{--------------------------}
Function Inside(i, j, k, p : Integer ) : Boolean;
{функция Inside возвращает TRUE, если точка с номером p
находится внутри треугольника с вершинами в точках i, j, k}
Var S1, S2 : Real;
{---------------------------------------------------}
Function Area(x1, y1, x2, y2, x3, y3 : Real) : Real;
{функция вычисления площади треугольника}
{с вершинами в точках (x1,y1), (x2,y2), (x3,y3)}
Begin Area:=abs((x1*(y2-y3)+x2*(y3-y1)+x3*(y1-y2))/2)
End; {of Area}
{--------------------------------------------------------}
Begin S1:=Area(X[i], Y[i], X[j], Y[j], X[k], Y[k]);
{S1 - площадь треугольника с вершинами в точках i, j, k}
S2 := Area(X[i], Y[i], X[j], Y[j], X[p], Y[p]) +
Area(X[j], Y[j], X[k], Y[k], X[p], Y[p]) +
Area(X[k], Y[k], X[i], Y[i], X[p], Y[p]);
{S2 - сумма площадей трех
треугольников с вершинами
в точках (i,j,p), (j,k,p), (i,k,p) }
Inside:=S1>S2 - 0.001
End; {of Inside}
{--------------------------}
Procedure Triangle(x1, y1, x2, y2, x3, y3 : Integer; Color : Byte);
Begin {описание процедуры рисования треугольника цвета Color}
SetColor(Color);
Line(x1, y1, x2, y2);
Line(x2, y2, x3, y3);
Line(x3, y3, x1, y1)
End; {of Triangle}
{--------------------------}
BEGIN
GrDriver:=Detect;
InitGraph(GrDriver, GrMode, 'C:\TP\BGI');
GrError:= GraphResult;
If GrError<>GrOk then begin WriteLn(' Ошибка графики!'); Halt end;
Drawing_Axes; {вызов процедуры рисования осей координат}
InputOutput; {вызов процедуры ввода и вывода исходных данных}
Flag:=FALSE;
For i:=1 to n -2 do {циклы по номерам вершин внешнего треугольника}
For j:=i+1 to n -1 do
For k:=j+1 to n do
begin
SetColor(LightCyan); {установка яркоголубого цвета}
For p:=1 to n do {рисование и нумерация точек множества}
begin Circle(X[p], Y[p], 2); {рисование точки}
Str(p, Num);
OutTextXY(X[p]+4, Y[p]+3, Num) {
вывод номера точки}
end;
n1:=0; {занесение координат точек, находящихся
внутри треугольника, в массивы InX и InY}
For i1:=1 to n do
begin
If (i1<>i) and (i1<>j) and (i1<>k) and Inside(i,j,k,i1)
then begin Inc(n1); InX[n1]:=X[i1]; InY[n1]:=Y[i1]
end;
OutTextXY(2, j-5, Coord); Line(28, j, 30, j) end; For i:=1 to 29 do {нанесение делений и числовых отметок на ось OX} begin Str(20*i,Coord); j:=i*20+30; If Odd(i) then OutTextXY(j-8, 436,Coord); Line(j,430, j,432) end; SetViewPort(31,4,630,429,FALSE) {установка текущего графического окна} End; {of Drawing_Axes} {--------------------------} Function Inside(i, j, k, p : Integer ) : Boolean; {функция Inside возвращает TRUE, если точка с номером p находится внутри треугольника с вершинами в точках i, j, k} Var S1, S2 : Real; {---------------------------------------------------} Function Area(x1, y1, x2, y2, x3, y3 : Real) : Real; {функция вычисления площади треугольника} {с вершинами в точках (x1,y1), (x2,y2), (x3,y3)} Begin Area:=abs((x1*(y2-y3)+x2*(y3-y1)+x3*(y1-y2))/2) End; {of Area} {--------------------------------------------------------} Begin S1:=Area(X[i], Y[i], X[j], Y[j], X[k], Y[k]); {S1 - площадь треугольника с вершинами в точках i, j, k} S2 := Area(X[i], Y[i], X[j], Y[j], X[p], Y[p]) + Area(X[j], Y[j], X[k], Y[k], X[p], Y[p]) + Area(X[k], Y[k], X[i], Y[i], X[p], Y[p]); {S2 - сумма площадей трех треугольников с вершинами в точках (i,j,p), (j,k,p), (i,k,p) } Inside:=S1>S2 - 0.001 End; {of Inside} {--------------------------} Procedure Triangle(x1, y1, x2, y2, x3, y3 : Integer; Color : Byte); Begin {описание процедуры рисования треугольника цвета Color} SetColor(Color); Line(x1, y1, x2, y2); Line(x2, y2, x3, y3); Line(x3, y3, x1, y1) End; {of Triangle} {--------------------------} BEGIN GrDriver:=Detect; InitGraph(GrDriver, GrMode, 'C:\TP\BGI'); GrError:= GraphResult; If GrError<>GrOk then begin WriteLn(' Ошибка графики!'); Halt end; Drawing_Axes; {вызов процедуры рисования осей координат} InputOutput; {вызов процедуры ввода и вывода исходных данных} Flag:=FALSE; For i:=1 to n -2 do {циклы по номерам вершин внешнего треугольника} For j:=i+1 to n -1 do For k:=j+1 to n do begin SetColor(LightCyan); {установка яркоголубого цвета} For p:=1 to n do {рисование и нумерация точек множества} begin Circle(X[p], Y[p], 2); {рисование точки} Str(p, Num); OutTextXY(X[p]+4, Y[p]+3, Num) {вывод номера точки} end; n1:=0; {занесение координат точек, находящихся внутри треугольника, в массивы InX и InY} For i1:=1 to n do begin If (i1<>i) and (i1<>j) and (i1<>k) and Inside(i,j,k,i1) then begin Inc(n1); InX[n1]:=X[i1]; InY[n1]:=Y[i1] end;