Квадраты

Строится прямоугольник. Каждая его сторона делится в заданном отношении, задавая таким образом новую вершину. Затем на вновь полученных вершинах строится новый четырехугольник.

program kvadr;
uses crt,graph;
const n=10;
var l:word;
procedure new(x1,y1,x2,y2:integer;var xl,yl:integer); 
{ Вычисление  новой координаты вершины }
begin
 xl:=(x1+(n-1)*x2) div n;
 yl:=(y1+(n-1)*y2) div n;
end;
{ Процедура построения четырехугольника }
procedure postroit(x1,y1,x2,y2,x3,y3,x4,y4:integer);
var l1,k1,l2,k2,l3,k3,l4,k4:integer;
label qv;
begin
  setcolor(l);
  line(x1,y1,x2,y2);
  line(x2,y2,x3,y3);
  line(x3,y3,x4,y4);
  line(x4,y4,x1,y1);
 if abs(x2-x1)<0.001 then goto qv; { Проверка окончания
                                          построения }
  new(x1,y1,x2,y2,l1,k1);
  new(x2,y2,x3,y3,l2,k2);
  new(x3,y3,x4,y4,l3,k3);
  new(x4,y4,x1,y1,l4,k4);
  delay(70);
  postroit(l1,k1,l2,k2,l3,k3,l4,k4);
qv:
end;
var k,dr,md:integer;
    x1,x2,x3,x4,y1,y2,y3,y4:integer;
begin
  l:=10;
  x1:=120;y1:=40;
  x2:=520;y2:=40;
  x3:=520;y3:=440;
  x4:=120;y4:=440;
  dr:=9;md:=2;
  initgraph(dr,md,'');
  setbkcolor(1);
  postroit(x1,y1,x2,y2,x3,y3,x4,y4);
  readln;
  closegraph;
end.
Вот и все.