Среда разработки: 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.
Hosted by uCoz