Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПРАКТИКУМ_4.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1.68 Mб
Скачать

Interface

uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls,

Forms,Dialogs,Unit2,Unit3;

Const

k=101; // количество точек графика

xn=70; yn=20; // границы поля вывода графика, левый верхний

xk=750; yk=450; // и правый нижний угол условного прямоугольника

ndx=10; ndy=10; // число интервалов масштабной сетки по осям вывода

n=5; m=2; // формат вывода числа

type

TForm7 = class(TForm)

procedure FormActivate(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form7: TForm7;

// обозначение переменных дано в соответствии с описанием алгоритма

dx,dy,rx,ry,ymin,ymax,xmin,xmax:real;

kx,ky:array[1..k] of integer; // массивы значений аргумента и функции

//в экранных координатах

x,y:array[1..k] of real; // массивы реальных, абсолютных значений

// аргумента и функции

lx,ly:integer;

mx,my:integer; // ширина и высота поля вывода графика

i:integer;

chislo:string[20];

implementation

uses Unit1;

{$R *.dfm}

procedure TForm7.FormActivate(Sender: TObject);

var st:string;

begin

Form7.refresh;

xmin:=a; xmax:=b;

dx:=(xmax-xmin)/(k-1);

for i:=1 to k do // заполнение массивов реальными значениями

begin // аргумента и функции

x[i]:=xmin+(i-1)*dx;

case key of // выбор уравнения

0: y[i]:=f1(x[i]);

1: y[i]:=f2(x[i]);

2: y[i]:=f3(x[i]);

3: y[i]:=f11(x[i]);

4: y[i]:=f22(x[i]);

5: y[i]:=f33(x[i]);

end;

end;

ymin:=y[1]; ymax:=y[1];

for i:=2 to k do

begin

if y[i]<ymin then ymin:=y[i];

if y[i]>ymax then ymax:=y[i];

end;

rx:=x[k]-x[1];

ry:=ymax-ymin;

mx:=xk-xn;

my:=yk-yn;

for i:=1 to k do // заполнение массивов аргумента и функции

begin //в размерности экранных координат

kx[i]:=round((x[i]-x[1])*mx/rx)+xn;

ky[i]:=round((ymax-y[i])*my/ry)+yn;

end;

with form7.Canvas do //рисование графика функции

begin

pen.Color:=clgreen;

pen.Width:=3;

rectangle(xn-3,yn-3,xk+3,yk+3); // очерчиваем поле вывода графика

pen.Color:=clred;

pen.Width:=2;

moveto(kx[1],ky[1]); // переносим перо в начало системы координат

for i:=1 to k-1 do // строим график отрезками прямых линий

lineto(kx[i+1],ky[i+1]);

lx:=(xk-xn) div ndx; //вычисляем шаг изменения аргумента в экранных

// координатах

dx:=(x[k]-x[1])/ndx; //вычисляем шаг изменения аргумента

//в абсолютных координатах

pen.Color:=clblue;

pen.Width:=2;

for i:=1 to ndx+1 do

begin

moveto(xn+lx*(i-1),yn); lineto(xn+lx*(i-1),yk); //строим вертикальные линии

// масштабной сетки

str((xmin+(i-1)*dx):n:m, chislo); // оцифровываем ось абцисс

font.Color:=clblack;

textout(xn+lx*(i-1)-(n-m)*8+4,yk+14, chislo);

end;

ly:=(yk-yn) div ndy; //вычисляем шаг изменения функции в экранных

// координатах

dy:=(ymax-ymin)/ndy; ; //вычисляем шаг изменения функции

//в абсолютных координатах

pen.Color:=clblue;

pen.Width:=2;

for i:=1 to ndy+1 do

begin

moveto(xn,yn+ly*(i-1)); lineto(xk,yn+ly*(i-1)); //строим горизонтальные

// линии масштабной сетки

str((ymin+(i-1)*dy):n:m, chislo); // оцифровываем ось ординат

font.Color:=clblack;

textout(xn-(n*8+15),yk-(i-1)*ly, chislo);

end;

end;

end;