VIDEO.PAS 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. Uses CRT,GRAPH,Strcalc;
  2. Const
  3. Eps = 0.001;
  4. Del = 5000;
  5. LeftGr = -50;
  6. RightGr = 50;
  7. Var
  8. Fn:string;
  9. Procedure InitG;
  10. Var
  11. grDriver: Integer;
  12. grMode: Integer;
  13. i : integer;
  14. Begin
  15. grDriver := Detect;
  16. InitGraph(grDriver, grMode,'');
  17. { SetWriteMode(XORPut);}
  18. SetFillStyle(XHatchFill,Green);
  19. Bar(0,0,GetMaxX,GetMaxY);
  20. SetFillStyle(SolidFill,Black);
  21. Bar(100,50,540,450);
  22. SetColor(Red);
  23. Line(100,250,540,250);
  24. End;{InitG}
  25. {--------------------------------}
  26. Function Func(x: real): real;
  27. Var
  28. ret: real;
  29. Begin
  30. ret := StrFunc(fn,x/10);
  31. Func := ret;
  32. End;
  33. {-----------------------------}
  34. Procedure WriteGraph(l,r,Color:Integer);
  35. Var
  36. x,y,Razm : Integer;
  37. Begin
  38. Razm := r-l;
  39. SetColor(Color);
  40. MoveTo(100,250-Round(Func(l)*200));
  41. for x := L to R do
  42. begin
  43. y := round(Func(x)*200);
  44. LineTo(round(100+(x-l)*((440)/razm)),250-y);
  45. end;
  46. End;{WriteGraph}
  47. {---------------------------------}
  48. Procedure ShowWaterLine(x:integer);
  49. Var
  50. temp : integer;
  51. x1 : integer;
  52. Begin
  53. temp := GetColor;
  54. SetColor(Yellow);
  55. x1 := round(440*((x-LeftGr)/(RightGr-LeftGr))+100);
  56. Line(x1,50,x1,450);
  57. SetColor(temp)
  58. End;{ShowWaterLine}
  59. {---------------------------------}
  60. Procedure Calculate;
  61. Var
  62. R,L : real;
  63. Begin
  64. R := RightGr;
  65. L := LeftGr;
  66. WriteGraph(round(L),round(R),Blue);
  67. repeat
  68. ShowWaterLine(round((L+R)/2));
  69. Delay(Del);
  70. if func((L+R)/2)>0 then L := ((L+R)/2)
  71. else R := ((L+R)/2);
  72. until abs(func((L+R)/2)) < Eps;
  73. End;
  74. {------------------}
  75. Begin
  76. Write('Enter function: ');
  77. ReadLn(fn);
  78. InitG;
  79. Calculate;
  80. CloseGraph;
  81. End.