{ Вычислить функции f(x) на отрезке [1,5] с шагом 0.1 x^2 , если 1<= x <=2.5 f(x) ={ x^1/2 (это корень квадратный из <X>), если 2.5< x <=4.2 -1, если 4.2 < x <= 5 Записать значение функции в файл в виде < x f(x) >. Построить графики функций f(x) в градуированной системе координат. } Program GraphFunc; {$N+ E+} Uses Crt, Graph; Const KoefX = 35; n = 1000; Color = 2; Var f : Text; x : Real; Xasp, Yasp, KoefY : Word; Function Func(x:Extended) : Extended; begin if (x>=1) and (x<=2.5) then Func := x * x else if (x>2.5) and (x<=4.2) then Func := sqrt(x) else Func := -1; end; Procedure SaveFuncFile; begin Assign(f,'Func.txt'); Rewrite(f); WriteLn(f,' x f(x)'); x := 1; repeat WriteLn(f,x:4:1,Func(x):6:2); x := x + 0.1; until x > 5; Close(f); end; Procedure GrInit; var grDriver, grMode, ErrCode : integer; begin grDriver := Detect; InitGraph(grDriver,grMode,''); ErrCode := GraphResult; if ErrCode <> grOk then begin WriteLn('Ошибка графики: ',GraphErrorMsg(ErrCode)); WriteLn('Программа остановлена.'); Halt(1); end; GetAspectRatio(Xasp,Yasp); KoefY := round((Xasp / Yasp) * KoefX); end; Procedure SysCoord; const dx = 2; dy = 2; var x, y : Word; s : string[5]; t : integer; begin Line(0, GetMaxY div 2, GetMaxX, GetMaxY div 2); Line(GetMaxX - 2*dx, GetMaxY div 2 + 2*dy, GetMaxX, GetMaxY div 2); Line(GetMaxX - 2*dx, GetMaxY div 2 - 2*dy, GetMaxX, GetMaxY div 2); OutTextXY(GetMaxX - 15,GetMaxY div 2 - 15,'X'); x := (GetMaxX div 2) mod KoefX; t := (GetMaxX div 2) div KoefX; while x < GetMaxX do begin Line(x, GetMaxY div 2 - dy, x, GetMaxY div 2 + dy); Str(-t,s); t := t - 1; OutTextXY(x + dx, GetMaxY div 2 + 8, s); x := x + KoefX; end; Line(GetMaxX div 2, 0, GetMaxX div 2, GetMaxY); Line(GetMaxX div 2 - 2*dx, 2*dy, GetMaxX div 2, 0); Line(GetMaxX div 2 + 2*dx, 2*dy, GetMaxX div 2, 0); OutTextXY(GetMaxX div 2 + 10, 10,'Y'); y := (GetMaxY div 2) mod KoefY; t := (GetMaxY div 2) div KoefY; while y < GetMaxY do begin Line(GetMaxX div 2 - dx, y, GetMaxX div 2 + dx, y); Str(t,s); t := t - 1; if s<>'0' then OutTextXY(GetMaxX div 2 - 20, y - dy, s); y := y + KoefY; end; end; Procedure DrawGraph; var xi, yi, h : Extended; begin h := 0.1 / KoefX ; xi := 1; while xi < 5 do begin yi := Func(xi); PutPixel(GetMaxX div 2 + round(xi * KoefX), GetMaxY div 2 - round(yi * KoefY),Color); xi := xi + h; end; end; Begin ClrScr; SaveFuncFile; GrInit; SysCoord; DrawGraph; ReadKey; CloseGraph; End. | Содержимое полученного файла (FUNC.TXT):x f(x) 1.0 1.00 1.1 1.21 1.2 1.44 1.3 1.69 1.4 1.96 1.5 2.25 1.6 2.56 1.7 2.89 1.8 3.24 1.9 3.61 2.0 4.00 2.1 4.41 2.2 4.84 2.3 5.29 2.4 5.76 2.5 6.25 2.6 1.61 2.7 1.64 2.8 1.67 2.9 1.70 3.0 1.73 3.1 1.76 3.2 1.79 3.3 1.82 3.4 1.84 3.5 1.87 3.6 1.90 3.7 1.92 3.8 1.95 3.9 1.97 4.0 2.00 4.1 2.02 4.2 2.05 4.3 -1.00 4.4 -1.00 4.5 -1.00 4.6 -1.00 4.7 -1.00 4.8 -1.00 4.9 -1.00 5.0 -1.00 |
{ Вычислить функции sin(x), cos(x), f(x) на отрезке [-Pi,Pi] с шагом Pi/20 sin(x), если -Pi <= x <= 0 f(x) ={ cos(x), если 0 < x <= Pi Записать значение функции в файл в виде < x sin(x) cos (x) f(x) >. Построить графики функций f(x) в градуированной системе координат. } Program GraphFunc; {$N+ E+} Uses Crt, Graph; Const KoefX = 70; n = 1000; Color = 2; Var f : Text; x : Real; Xasp, Yasp, KoefY : Word; Function Func(x:Extended) : Extended; begin if (x >= -Pi) and (x <= 0) then Func := sin(x) else Func := cos(x); end; Procedure SaveFuncFile; begin Assign(f,'Func.txt'); Rewrite(f); WriteLn(f,' x sin(x) cos(x) f(x)'); x := -Pi; repeat WriteLn(f,x:4:1,sin(x):7:2,cos(x):9:2,Func(x):8:2); x := x + Pi/20; until x > Pi; Close(f); end; Procedure GrInit; var grDriver, grMode, ErrCode : integer; begin grDriver := Detect; InitGraph(grDriver,grMode,''); ErrCode := GraphResult; if ErrCode <> grOk then begin WriteLn('Ошибка графики: ',GraphErrorMsg(ErrCode)); WriteLn('Программа остановлена.'); Halt(1); end; GetAspectRatio(Xasp,Yasp); KoefY := round((Xasp / Yasp) * KoefX); end; Procedure SysCoord; const dx = 2; dy = 2; var x, y : Word; s : string[5]; t : integer; begin Line(0, GetMaxY div 2, GetMaxX, GetMaxY div 2); Line(GetMaxX - 2*dx, GetMaxY div 2 + 2*dy, GetMaxX, GetMaxY div 2); Line(GetMaxX - 2*dx, GetMaxY div 2 - 2*dy, GetMaxX, GetMaxY div 2); OutTextXY(GetMaxX - 15,GetMaxY div 2 - 15,'X'); x := (GetMaxX div 2) mod KoefX; t := (GetMaxX div 2) div KoefX; while x < GetMaxX do begin Line(x, GetMaxY div 2 - dy, x, GetMaxY div 2 + dy); Str(-t,s); t := t - 1; OutTextXY(x + dx, GetMaxY div 2 + 8, s); x := x + KoefX; end; Line(GetMaxX div 2, 0, GetMaxX div 2, GetMaxY); Line(GetMaxX div 2 - 2*dx, 2*dy, GetMaxX div 2, 0); Line(GetMaxX div 2 + 2*dx, 2*dy, GetMaxX div 2, 0); OutTextXY(GetMaxX div 2 + 10, 10,'Y'); y := (GetMaxY div 2) mod KoefY; t := (GetMaxY div 2) div KoefY; while y < GetMaxY do begin Line(GetMaxX div 2 - dx, y, GetMaxX div 2 + dx, y); Str(t,s); t := t - 1; if s<>'0' then OutTextXY(GetMaxX div 2 - 20, y - dy, s); y := y + KoefY; end; end; Procedure DrawGraph; var xi, yi, h : Extended; begin h := Pi/20 / KoefX ; xi := -Pi; while xi < Pi do begin yi := Func(xi); PutPixel(GetMaxX div 2 + round(xi * KoefX), GetMaxY div 2 - round(yi * KoefY),Color); xi := xi + h; end; end; Begin ClrScr; SaveFuncFile; GrInit; SysCoord; DrawGraph; ReadKey; CloseGraph; End. | Содержимое полученного файла (FUNC.TXT):x sin(x) cos(x) f(x) -3.1 -0.00 -1.00 -0.00 -3.0 -0.16 -0.99 -0.16 -2.8 -0.31 -0.95 -0.31 -2.7 -0.45 -0.89 -0.45 -2.5 -0.59 -0.81 -0.59 -2.4 -0.71 -0.71 -0.71 -2.2 -0.81 -0.59 -0.81 -2.0 -0.89 -0.45 -0.89 -1.9 -0.95 -0.31 -0.95 -1.7 -0.99 -0.16 -0.99 -1.6 -1.00 -0.00 -1.00 -1.4 -0.99 0.16 -0.99 -1.3 -0.95 0.31 -0.95 -1.1 -0.89 0.45 -0.89 -0.9 -0.81 0.59 -0.81 -0.8 -0.71 0.71 -0.71 -0.6 -0.59 0.81 -0.59 -0.5 -0.45 0.89 -0.45 -0.3 -0.31 0.95 -0.31 -0.2 -0.16 0.99 -0.16 -0.0 -0.00 1.00 -0.00 0.2 0.16 0.99 0.99 0.3 0.31 0.95 0.95 0.5 0.45 0.89 0.89 0.6 0.59 0.81 0.81 0.8 0.71 0.71 0.71 0.9 0.81 0.59 0.59 1.1 0.89 0.45 0.45 1.3 0.95 0.31 0.31 1.4 0.99 0.16 0.16 1.6 1.00 0.00 0.00 1.7 0.99 -0.16 -0.16 1.9 0.95 -0.31 -0.31 2.0 0.89 -0.45 -0.45 2.2 0.81 -0.59 -0.59 2.4 0.71 -0.71 -0.71 2.5 0.59 -0.81 -0.81 2.7 0.45 -0.89 -0.89 2.8 0.31 -0.95 -0.95 3.0 0.16 -0.99 -0.99 3.1 0.00 -1.00 -1.00 |