zadach256.PAS

{* Задача 256 *}

Unit ZADACH256;
Interface
Implementation
Begin
 writeln('Начертить узор, составленный из шестиугольников. Узор образован 20 вложенными квадратами. Стороны первого квадрата параллельны осям координат экрана и равны 60. Вершины каждого последующего квадрата - это точки на сторонах квадрата, делящие эти стороны в отношении н(Ню)=0.08');
End.

Program N866V;

Uses zadach256.pas; {* Эту строку можно удалить *}
Uses GraphABC; {* Подключаем внешние файлы *}
Var {* Необходимые переменные *}
  z    : integer;
  dx   : integer;
  dy   : integer;
  dx1  : integer;
  dy1  : integer;
  l    : integer;
  n    : integer;
  i    : integer;
  gd   : integer;
  gm   : integer;
  top  : integer;
  left : integer;
  a    : real;
  nu   : real;
Procedure drawsq(dx, dy, l : integer);
Begin
  moveto(l - dx + left, dy + top);
  lineto(dy + left, dx + top);
  lineto(dx + left, l - dy + top);
  lineto(l - dy + left, l - dx + top);
  lineto(l - dx + left, dy + top);
End;
Begin
  top := 20;
  left := 20;
  l := 60;
  dx := 0;
  dy := 0;
  n := 20;
  nu := 0.08;
  drawsq(dx, dy, l);
  For i := 2 To n Do {* Увеличиваем i от 2 до n с шагом 1 *}
  Begin
    dx1 := dx + round((l - dx - dy) * nu);
    dy1 := dy + round((dx - dy) * nu);
    dx := dx1;
    dy := dy1;
    drawsq(dx, dy, l);
  End;
  readln; {* Ждем подтверждения пользователя *}
End.