ВУЗ:
Составители:
Рубрика:
            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;
