program varik5;
uses GraphABC;
type mas=array [1..101,1..3]of real;
var
C:mas;
i,j,x,y,n,k,d,xn,xk,yn,yk,xGR,yGR,xGR1,yGR1,color,o:Integer;
s:String;
CA,CB,K1,dt,t,Mx,My:Real;
procedure Setka(x,y,d,n,k:Integer);
begin
SetPenWidth(3);
rectangle (x-3,y-3,x+d*5+154,y+d*10+14);
SetPenWidth(1);
SetPenStyle(psdot);
for var j:=0 to n-1 do begin
for var i:=0 to n do begin
Rectangle(x,y,x+33,y+42);
end;
end;
end;
procedure Osi;
begin
TextOut(150,10,'Изменение концентрации');
o:=0;
for var i:=1 to 20 do begin
if 20 mod 2=0 then
o:=o+2;
j:=i+1;
Str(o,s);
TextOut(45+i*18,445,s);
end;
for i:=0 to 101 do begin
Str(i*20,s);
TextOut(25,435-i*42,s);
end;
end;
procedure Graphic;
begin
xn:=54;
xk:=380;
yn:=60;
yk:=444;
K1:=0.4;
CA:=100;
CB:=0;
t:=0;
dt:=0.1;
for i:=1 to 101 do
begin
t:=t+0.1;
C[i,1]:=t;
CA:=CA+(-K1*CA)*dt;
CB:=CB+(K1*CA)*dt;
C[i,2]:=CA;
C[i,3]:=CB;
end;
SetPenWidth(2);
SetPenStyle(psSolid);
Mx:=(xk-xn)/(20-1);
My:=(yk-yn)/(100-10);
for j:=2 to 3 do
begin
if j=2 then color:=clBlue;
if j=3 then color:=clGreen;
SetPenColor(color);
for i:=1 to 101 do
begin
xGr:=xn+Round(mx*C[i,1]);
yGr:=yk-Round(my*C[i,j]);
Circle(xGr,yGr,3);
end;
end;
end;
begin
SetWindowSize(1500,1480);
CenterWindow;
MaximizeWindow;
Setka(55,30,40,10,0);
Osi;
SetPenVolor(clBlue);
Graphic;
end.