Uses CRT,GRAPH,Strcalc; Const Eps = 0.001; Del = 5000; Frames = 1000; Var Fn:string; LeftGr : real; RightGr : real; Procedure InitG; Var grDriver: Integer; grMode: Integer; i : integer; Begin grDriver := Detect; InitGraph(grDriver, grMode,''); { SetWriteMode(XORPut);} SetFillStyle(XHatchFill,Green); Bar(0,0,GetMaxX,GetMaxY); SetFillStyle(SolidFill,Black); Bar(100,50,540,450); SetColor(Red); Line(100,250,540,250); End;{InitG} {--------------------------------} Function Func(x: real): real; Var ret: real; Begin ret := StrFunc(fn,x); Func := ret; End; {-----------------------------} Procedure WriteGraph(l,r:real;Color:Integer); Var x,y : Integer; razmx,razmy,max,min: real; Begin Razmx := r-l; SetColor(Color); min := maxint; min := -maxint; for x := 1 to Frames do begin y := round(Func(l+(x/Frames)*razmx)*10); if y < min then min := y; if y > max then max := y end; razmy := max-min; MoveTo(100,250-Round(-200+((Func(l)-min)/razmy*400))); for x := 1 to Frames do begin Y:=Round(-200+((Func(l+(x/Frames)*razmx)-min)/razmy*400)); LineTo(100+round(x/Frames*440),250-y); end; End;{WriteGraph} {---------------------------------} Begin Write('Enter function: '); ReadLn(fn); Read(LeftGr,RightGr); InitG; WriteGraph(leftGr,RightGR,Blue); ReadKey; CloseGraph; End.