Среда разработки: Turbo Pascal 7.1
uses graph,crt; Var Gd,Gm:Integer; max:byte; ch:char; form:real; procedure triangle(x1,y1,x2,y2,x3,y3,depth:integer); var newx1,newx2,newx3,newy1,newy2,newy3:integer; begin if keypressed then ch:=readkey; if (depth=0) or (ch=#27) then exit; Line(x1,y1,x2,y2); Line(x2,y2,x3,y3); Line(x3,y3,x1,y1); newx1:=round((x1+x2)/2); newy1:=round((y1+y2)/2); newx2:=round((x2+x3)/2); newy2:=round((y2+y3)/2); newx3:=round((x3+x1)/2); newy3:=round((y3+y1)/2); Line(newx1,newy1,newx2,newy2); Line(newx2,newy2,newx3,newy3); Line(newx3,newy3,newx1,newy1); triangle(newx1,newy1,newx2,newy2,newx3,newy3,depth-1); triangle(round((newx3+newx2)/2),round((newy3+newy2)/2), round((newx2+x3)/2),round((newy2+y3)/2), round((x3+newx3)/2),round((y3+newy3)/2),depth-1); triangle(round((newx1+x2)/2),round((newy1+y2)/2), round((x2+newx2)/2),round((y2+newy2)/2), round((newx2+newx1)/2),round((newy2+newy1)/2),depth-1); triangle(round((x1+newx1)/2),round((y1+newy1)/2), round((newx1+newx3)/2),round((newy1+newy3)/2), round((newx3+x1)/2),round((newy3+y1)/2),depth-1); end; Begin clrscr; write('Введите глубину:'); read(max); Gd:=Detect; InitGraph(Gd, Gm, ''); If GraphResult <> grOk Then Halt(1); triangle(0,0, 0,getmaxy, getmaxx,getmaxy, max); repeat until keypressed; CloseGraph; End.