{ Вычислить функции 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
|