marker_place[arg_edit,i[arg_edit]].x:=x;
marker_place[arg_edit,i[arg_edit]].y:=y;
end;
'~' : begin
write(' ');
i[fun_edit]:=i[fun_edit]+1;
marker_place[fun_edit,i[fun_edit]].x:=x;
marker_place[fun_edit,i[fun_edit]].y:=y;
end;
'!' : begin
write(' ');
i[diag_edit]:=i[diag_edit]+1;
marker_place[diag_edit,i[diag_edit]].x:=x;
marker_place[diag_edit,i[diag_edit]].y:=y;
end;
else
write(a);
end;
until eoln(d);
readln(d); writeln;
until eof(d);
close(d);
end;
procedure readreal(var value : real; a : char; len : word; ad : scr_adr);
var LI : array[1 10] of char;
x,y,old : integer;
st : string;
begin
write(' ':len);
gotoXY(ad.x,ad.y);
LI[1]:=a; write(a); y:=2;
if a<>#13 then
repeat
a:=readkey;
if a=',' then a:='.';
if ((a='O') or (a='o')) then a:='0';
if ((a>='0') and (a<='9')) or (a='.')
then begin LI[y]:=a; write(a); y:=y+1 end;
if a=#8 then
begin y:=y-1;
gotoXY(ad.x+y-1,ad.y);
write(' ');
gotoXY(ad.x+y-1,ad.y);
end;
until a=#13;
st:=LI[1];
for x:=2 to y-1 do st:=concat(st,LI[x]);
val(st,value,old);
end;
procedure setmarker(m : scr_mod; i : integer);
begin
gotoxy(marker_place[m,i].x,marker_place[m,i].y);
end;
procedure wri_val(x : real; i : integer; old : boolean);
begin
if old
then begin textbackground(Black);
textcolor(LightGray)
end
else begin textbackground(LightGray);
textcolor(Black)
end;
setmarker(fun_edit,i+1);
write(' ':4);
setmarker(fun_edit,i+1);
write(x:4:1);
setmarker(fun_edit,i+1);
end;
procedure edit_prob(index : par_typ);
var
st : real;
j : integer;
a : char;
begin
with step_distri[index] do
begin
readscreen('distrib.scr',LightGray,Red);
gotoXY(name_place.x,name_place.y);
case index of
g_shift : write('Глобальный шаг');
l_shift : write('Локальный шаг');
angle : write('Угол');
end;
st:=max_step/10;
for j:=0 to 10 do
begin
step[j]:=j*st;
gotoXY(marker_place[arg_edit,j+1].x,marker_place[arg_edit,j+1].y);
write(step[j]:4:1);
gotoXY(marker_place[fun_edit,j+1].x,marker_place[fun_edit,j+1].y);
write(manual[j]:4:1);
end;
j:=0;
repeat
setmarker(fun_edit,j+1);
wri_val(manual[j],j,false);
setmarker(fun_edit,j+1);
a:=readkey;
if a=#0 then
begin
a:=readkey;
wri_val(manual[j],j,true);
case a of
rightarrow, downarrow : j:=j+1;
leftarrow, uparrow : j:=j-1;
end;
if j>10 then j:=10;
if j<0 then j:=0;
end;
if ((a>='0') and (a<='9')) or (a='-')
then
begin
readreal(st,a,4,marker_place[fun_edit,j+1]);
manual[j]:=st;
end;
until ((a=chr(27)) or (a=' '));
end;
end;
procedure normalize;
var
j : word;
s : par_typ;
x : real;
begin
for s:=g_shift to angle do
begin