ВУЗ:
Составители:
Рубрика:
Внимание: будет работать только если Turbo Pascal установлен в каталог 
C:\TP и каталог C:\TP\BGI содержит необходимый файл egavga.bgi.  
Program Triangles; {Составил студент Тезадов С., 1 к. мат. фак. КБГУ} 
  Uses Crt,Graph; 
  Const DemoN = 10; 
    DemoX: array [1..DemoN] of Integer = 
(20,150,90,500,50,110,370,300,70,500);   
    DemoY: array [1..DemoN] of Integer = 
(20,40,300,400,380,130,290,140,60,170); 
  Var X, Y       : Array[1..50] of Integer; {координаты точек множества} 
      InX, InY   : Array[1..50] of Integer; {координаты вершин внутренних} 
      Flag       : Boolean; {треугольников} 
      Ch         : Char; 
      Coord, Num : String; 
      i, j, k, p, i1, j1, k1, n, n1 : Integer; 
      GrDriver, GrMode, GrError     : Integer; 
{--------------------------} 
Procedure InputOutput; {Описание процедуры считывания координат точек 
                        множества из текстового файла dan.dat в массивы  
                        X и Y и вывода точек на графический экран } 
  Var f   : Text; 
      a,b : Real; 
 Begin 
   Assign(f, 'dan.dat'); {установление связи между физическим } 
                         {файлом dan.dat и файловой пеpеменной f} 
   {$I-}  {- отключаем 
автоматическую проверку существования файла} 
   Reset(f); i:=0; {открытие файла f для чтения} 
   {$I+} 
   If IOResult = 0 then begin {если файл существует} 
     While not eof(f) do {цикл "пока не будет достигнут конца файла"} 
       begin Read(f,a,b); Inc(i); {считывание из файла f пары координат} 
         X[i]:=Trunc(a-1); Y[i]:=Trunc(428-b) {преобразование декартовых} 
       end; {координат в координаты графического экрана} 
     n:=i; {n - количество введенных точек множества} 
     Close(f); {закрытие файла f} 
   end 
   Else begin {если файла не существует, то используем множество точек,} 
     n := DemoN; {заданное 
в DemoN, DemoX, DemoY.} 
     For i:=1 to DemoN do begin 
       x[i] := DemoX[i]; 
       y[i] := 428 - DemoY[i]; 
     end; 
   end; 
   SetColor(LightCyan); 
   OutTextXY(200,30,'ИСХОДНОЕ МНОЖЕСТВО ТОЧЕК'); 
   For i:=1 to n do {рисование и нумерация точек множества} 
     begin Circle(X[i], Y[i], 2); 
        Str(i, Num); OutTextXY(X[i]+4, Y[i]+3, Num) 
     end; 
   Ch:=ReadKey; ClearViewPort; {очистка графического окна} 
 End; {of InputOutput} 
{--------------------------} 
Procedure Drawing_Axes; {описание процедуры рисования осей координат} 
  Begin SetColor(White); 
    MoveTo(30,0); LineTo(30,430); LineTo(639,430); {оси ОХ,OY} 
    OutTextXY(27,0,'^'); OutTextXY(630,427,'>'); {стрелки осей OX, OY} 
    SetColor(LightGreen); 
    OutTextXY(18,0,'y'); OutTextXY(630,434,'x'); 
    OutTextXY(25,433,'0'); 
    SetColor(LightMagenta); {установка розового цвета} 
    For i:=1 to 20 do {нанесение делений и числовых отметок на ось OY} 
      begin Str(20*(21-i), Coord); j:=i*20+10; 
  Внимание: будет работать только если Turbo Pascal установлен в каталог
   C:\TP и каталог C:\TP\BGI содержит необходимый файл egavga.bgi.
Program Triangles; {Составил студент Тезадов С., 1 к. мат. фак. КБГУ}
  Uses Crt,Graph;
  Const DemoN = 10;
    DemoX: array [1..DemoN] of Integer =
(20,150,90,500,50,110,370,300,70,500);
    DemoY: array [1..DemoN] of Integer =
(20,40,300,400,380,130,290,140,60,170);
  Var X, Y       : Array[1..50] of Integer; {координаты точек множества}
      InX, InY   : Array[1..50] of Integer; {координаты вершин внутренних}
      Flag       : Boolean; {треугольников}
      Ch         : Char;
      Coord, Num : String;
      i, j, k, p, i1, j1, k1, n, n1 : Integer;
      GrDriver, GrMode, GrError      : Integer;
{--------------------------}
Procedure InputOutput; {Описание процедуры считывания координат точек
                         множества из текстового файла dan.dat в массивы
                        X и Y и вывода точек на графический экран }
  Var f   : Text;
      a,b : Real;
 Begin
   Assign(f, 'dan.dat'); {установление связи между физическим }
                          {файлом dan.dat и файловой пеpеменной f}
   {$I-} {- отключаем автоматическую проверку существования файла}
   Reset(f); i:=0; {открытие файла f для чтения}
   {$I+}
   If IOResult = 0 then begin {если файл существует}
     While not eof(f) do {цикл "пока не будет достигнут конца файла"}
       begin Read(f,a,b); Inc(i); {считывание из файла f пары координат}
         X[i]:=Trunc(a-1); Y[i]:=Trunc(428-b) {преобразование декартовых}
       end; {координат в координаты графического экрана}
     n:=i; {n - количество введенных точек множества}
     Close(f); {закрытие файла f}
   end
   Else begin {если файла не существует, то используем множество точек,}
     n := DemoN; {заданное в DemoN, DemoX, DemoY.}
     For i:=1 to DemoN do begin
       x[i] := DemoX[i];
       y[i] := 428 - DemoY[i];
     end;
   end;
   SetColor(LightCyan);
   OutTextXY(200,30,'ИСХОДНОЕ МНОЖЕСТВО ТОЧЕК');
   For i:=1 to n do {рисование и нумерация точек множества}
     begin Circle(X[i], Y[i], 2);
        Str(i, Num); OutTextXY(X[i]+4, Y[i]+3, Num)
     end;
   Ch:=ReadKey; ClearViewPort; {очистка графического окна}
 End; {of InputOutput}
{--------------------------}
Procedure Drawing_Axes; {описание процедуры рисования осей координат}
  Begin SetColor(White);
    MoveTo(30,0); LineTo(30,430); LineTo(639,430); {оси ОХ,OY}
    OutTextXY(27,0,'^'); OutTextXY(630,427,'>'); {стрелки осей OX, OY}
    SetColor(LightGreen);
    OutTextXY(18,0,'y'); OutTextXY(630,434,'x');
    OutTextXY(25,433,'0');
    SetColor(LightMagenta); {установка розового цвета}
    For i:=1 to 20 do {нанесение делений и числовых отметок на ось OY}
      begin Str(20*(21-i), Coord); j:=i*20+10;
