PROGRAM Graphic_of_Function;
USES CRT, Graph;
CONST
N = 50; {число точек на графике}
xwmin:integer=0;
ywmin:integer=0;
xwmax:integer=639;
ywmax:integer=479;
VAR
X, Y : array[1..N] of real;
xmin, xmax, ymin, ymax : real; { Мировая система координат }
PROCEDURE SetWorldCoords( x1, y1, x2, y2 : real );
{ Процедура назначения мировых координат }
BEGIN
xmin := x1;
xmax := x2;
ymin := y1;
ymax := y2
END;
PROCEDURE SetWindow( x1, y1, x2, y2 : integer );
{ Процедура установки параметров окна вывода }
BEGIN
XWmin := x1;
XWmax := x2;
YWmin := y1;
YWmax := y2
END;
{ Функции преобразования мировых координат к координатам устройства }
FUNCTION Xs( x : real ) : integer;
BEGIN
Xs := XWmin + round( (XWmax-XWmin)* (x-xmin)/(xmax-xmin) )
END;
FUNCTION Ys( y : real ) : integer;
BEGIN
Ys := YWmax - round( (YWmax-YWmin)* (y-ymin)/(ymax-ymin) )
END;
PROCEDURE TablFunc( a, b : real );
VAR
i : integer;
function F( x : real ) : real;
begin
F := cos(x);
end;
BEGIN
for i:=1 to N do
begin
X[i] := a + (b-a)/(N-1)*(i-1);
Y[i] := F( X[i] );
end;
END;
FUNCTION MinY : real;
VAR
i : integer;
m : real;
BEGIN
m := Y[1];
for i:=2 to N do
if Y[i]<m then
m := Y[i];
MinY := m
END;
FUNCTION MaxY : real;
VAR
i : integer;
m : real;
BEGIN
m := Y[1];
for i:=2 to N do
if Y[i]>m then
m := Y[i];
MaxY := m
END;
PROCEDURE BuildCoords( nx, ny : Byte );
VAR
i : Byte;
v : real;
s : string;
BEGIN
SetColor( White );
Rectangle( XWmin, YWmin, XWmax, YWmax ); { область графика }
Line( Xs(xmin), Ys(0), Xs(xmax), Ys(0) ); { ось ОХ }
Line( Xs(0), Ys(ymax), Xs(0), Ys(ymin) ); { ось OY }
SetTextStyle(SmallFont,0,5); { выбор шрифта Small }
SetTextJustify(CenterText,CenterText); { выравнивание текста }
{ Разметка оси Х }
for i:=0 to nx-1 do
begin
v := xmin + (xmax-xmin)/(nx-1)*i; { координата i-го штриха }
Str(v:5:2,s); { преобразование числа в строку }
Line(Xs(v), YWmax, Xs(v), YWmax+5); { черчение i-го штриха }
OutTextXY(Xs(v), YWmax+15, s); { вывод числа }
end;
{ Разметка оси Y }
for i:=0 to ny-1 do
begin
v := ymin + (ymax-ymin)/(ny-1)*i;
Str(v:5:2,s);
Line(XWmin, Ys(v), XWmin-5, Ys(v));
OutTextXY(XWmin-30, Ys(v), s);
end;
END;
PROCEDURE Graphic( Color : word );
VAR
i : integer;
BEGIN
SetColor( Color );
MoveTo( Xs(X[1]), Ys(Y[1]) );
Circle( Xs(X[1]), Ys(Y[1]), 2);
FOR i:=2 TO N DO
begin
LineTo( Xs(X[i]), Ys(Y[i]) );
Circle( Xs(X[i]), Ys(Y[i]), 2);
end;
END;
VAR
a, b : real;
GrDr, GrMd : integer;
BEGIN
ClrScr;
Write('Введите пределы изменения аргумента [a, b]: '); {Здесь была ошибка представления строковых данных}
ReadLn(a, b);
TablFunc( a, b );
GrDr := detect;
InitGraph( GrDr, GrMd, '' );
SetWindow( 100, 50, 500, 400 );
SetWorldCoords( a, MinY, b, MaxY );
BuildCoords( 5, 5 );
Graphic( Yellow );
ReadKey;
CloseGraph;
END.
Если Вы уже зарегистрированы на Портале - войдите в систему, если Вы еще не регистрировались - пройдите простую процедуру регистрации.