Всем доброго времени суток. помогите пожалуйста переделать прогу для обхода дерева с паскаля на делфи. Вот исходный код на паскале:
Код | Program DemidenkoS; Uses Crt, Graph; Const Arr : array [1..6] of integer=(160,80,40,20,10,5); Arr1 : array [1..6] of integer=(120,80,70,60,50,40); Type ss=^sp; sp=record elem:byte; Next : array[1..2] of ss; end; Var a, b, c, d : longint; s : string; grDriver : integer; grMode : integer; a1, b1 : real; x, Some, Max, Min : ss; Procedure Zap(y : ss; n : integer); Var aa,bb:integer; Begin y^.elem:=random(99)+1; bb:=random(3); if n<1 then bb:=2; if n<a then for aa :=1 to bb do begin new(y^.next[aa]); y^.next[aa]^.next[1]:=nil; y^.next[aa]^.next[2]:=nil; zap(y^.next[aa],n+1); end; End; Procedure Strel(x1, y1 : integer; k : Real); Var aa : Real; Begin aa:=arctan(k); if k>0 then begin line(x1,y1,x1+round(10*cos(aa+pi/18)), y1-round(10*sin(aa+pi/18))); line(x1,y1,x1+round(10*cos(aa-pi/18)), y1-round(10*sin(aa-pi/18))); line(x1+round(10*cos(aa+pi/18)),y1- round(10*sin(aa+pi/18)),x1+ round(10*cos(aa-pi/18)),y1- round(10*sin(aa-pi/18))); end else begin aa:=-aa; line(x1,y1,x1-round(10*cos(aa+pi/18)), y1-round(10*sin(aa+pi/18))); line(x1,y1,x1-round(10*cos(aa-pi/18)), y1-round(10*sin(aa-pi/18))); line(x1-round(10*cos(aa+pi/18)),y1- round(10*sin(aa+pi/18)),x1- round(10*cos(aa-pi/18)),y1- round(10*sin(aa-pi/18))); end end; Procedure Wiv(y : ss; n, x1, y1 : integer); Var spi : ss; Begin SetColor(n+1); Circle(x1,y1,10); Str(y^.elem, s); if length(s)=2 then OutTextXY(x1-6, y1-2, s) else OutTextXY(x1-3, y1-2, s); if n<a then begin if y^.next[1]<>nil then begin SetColor(n+1); Line(x1,y1+10,x1-(arr[n] div 2),y1+((arr1[n]-20) div 2)+10); SetColor(n+2); Line(x1-(arr[n] div 2),y1+((arr1[n]-20) div 2)+10,x1-arr[n],y1+arr1[n]-10); Strel(x1-arr[n],y1+arr1[n]-10, (arr1[n]-20)/arr[n]); Wiv(y^.next[1],n+1,x1-arr[n],y1+ arr1[n]); end; if y^.next[2] <> nil then begin SetColor(n+1); Line(x1,y1+10,x1+arr[n],y1+arr1[n]-10); SetColor(n+2); Line(x1+(arr[n] div 2),y1+((arr1[n]-20) div 2)+10,x1+arr[n],y1+arr1[n]-10); Strel(x1+arr[n],y1+arr1[n]-10,- (arr1[n]-20)/arr[n]); Wiv(y^.next[2],n+1,x1+arr[n],y1+ arr1[n]); end; end; end; Begin ClrScr; Randomize; Repeat new(x); a:=6; x^.next[1]:=Nil; x^.next[2]:=Nil; Zap(x,0); Max:=x; Min:=x; writeln; grDriver := Detect; InitGraph(grDriver, grMode,''); SetFillStyle(solidfill,15); SetColor(15); Wiv(x,1,320,50); Delay(50000); until KeyPressed; End.
|
|