Помогите исправить ошибку
Uses crt;
var xmin, xmax, ymin, ymax: integer;
Type matrix=record
n, m: integer;
a : array[1..20, 1..20] of integer;
end;
procedure next(var x, y : integer; vid : integer);
begin
if vid = 0 then
begin
if x = xmin then
begin
inc
;
if y > ymax then
begin
y := ymax;
inc(x);
end
end
else if x = xmax then
begin
dec
;
if y < ymin then
begin
y := ymin;
dec(x);
end
end
else if y = ymin then
begin
dec(x);
if x < xmin then
begin
x := xmin;
inc
;
end
end
else if y = ymax then
begin
inc(x);
if x > xmax then
begin
x := xmax;
dec
;
end
end
end
else if vid = 1 then
begin
inc
;
if y > ymax then
y := ymin;
end
else
begin
inc(x);
if x > xmax then
x := xmin;
end;
end;
procedure sdvig(var mat, mat2 : matrix; k, p : integer);
var i, x, x2, y, y2, kol, vid : integer;
begin
vid := 0;
x2 := xmin; x := xmin;
y2 := ymin; y := ymin;
if xmin = xmax then
begin
kol := ymax - ymin + 1;
vid := 1;
end
else if ymin = ymax then
begin
kol := xmax - xmin + 1;
vid := 2;
end
else
kol := 2 * ((xmax - xmin + 1) + (ymax - ymin - 1));
p := p mod kol;
for i := 0 to p - 1 do
next(x2, y2, vid);
for i := 0 to kol - 1 do
begin
mat2.a[x2, y2] := mat.a[x, y];
next(x, y, vid);
next(x2, y2, vid);
end;
end;
var i, j, k, p : integer;
mat, mat2 : matrix;
begin
clrscr;
randomize;
writeLn('Laboratornaya rabota N7_1');
writeLn('Variant N1');
writeLn('IS-12-2');
writeLn('Birykov Sergey');
writeLn;
write('Vvedite kolichestvo strok n= ');
read(mat.n);
write('Vvedite kolichestvo stolbcov m= ');
read(mat.m);
write('Vvedite sloy k = ');
read(k);
write('Vvedite kolichestvo shagov p= ');
read(p);
writeln;
for i := 1 to mat.n do
for j := 1 to mat.m do
mat.a[i, j]:=random(100);
mat2 := mat;
xmin := k; xmax := mat.n - k + 1;
ymin := k; ymax := mat.m - k + 1;
if (xmin > xmax) or (ymin > ymax) then
begin
writeln('Nekorrektny vvod');
exit;
end;
writeln;
writeln('Ishodny massiv:');
for i := 1 to mat.n do
begin
for j := 1 to mat.m do
write(mat.a [j]:4);
writeln;
end;
sdvig(mat, mat2, k, p);
writeln;
writeln('Izmeneny massiv');
for i := 1 to mat.n do
begin
for j := 1 to mat.m do
write(mat2.a[j]:4);
writeln;
readln;
end;
end.
Uses crt;
var xmin, xmax, ymin, ymax: integer;
Type matrix=record
n, m: integer;
a : array[1..20, 1..20] of integer;
end;
procedure next(var x, y : integer; vid : integer);
begin
if vid = 0 then
begin
if x = xmin then
begin
inc
if y > ymax then
begin
y := ymax;
inc(x);
end
end
else if x = xmax then
begin
dec
if y < ymin then
begin
y := ymin;
dec(x);
end
end
else if y = ymin then
begin
dec(x);
if x < xmin then
begin
x := xmin;
inc
end
end
else if y = ymax then
begin
inc(x);
if x > xmax then
begin
x := xmax;
dec
end
end
end
else if vid = 1 then
begin
inc
if y > ymax then
y := ymin;
end
else
begin
inc(x);
if x > xmax then
x := xmin;
end;
end;
procedure sdvig(var mat, mat2 : matrix; k, p : integer);
var i, x, x2, y, y2, kol, vid : integer;
begin
vid := 0;
x2 := xmin; x := xmin;
y2 := ymin; y := ymin;
if xmin = xmax then
begin
kol := ymax - ymin + 1;
vid := 1;
end
else if ymin = ymax then
begin
kol := xmax - xmin + 1;
vid := 2;
end
else
kol := 2 * ((xmax - xmin + 1) + (ymax - ymin - 1));
p := p mod kol;
for i := 0 to p - 1 do
next(x2, y2, vid);
for i := 0 to kol - 1 do
begin
mat2.a[x2, y2] := mat.a[x, y];
next(x, y, vid);
next(x2, y2, vid);
end;
end;
var i, j, k, p : integer;
mat, mat2 : matrix;
begin
clrscr;
randomize;
writeLn('Laboratornaya rabota N7_1');
writeLn('Variant N1');
writeLn('IS-12-2');
writeLn('Birykov Sergey');
writeLn;
write('Vvedite kolichestvo strok n= ');
read(mat.n);
write('Vvedite kolichestvo stolbcov m= ');
read(mat.m);
write('Vvedite sloy k = ');
read(k);
write('Vvedite kolichestvo shagov p= ');
read(p);
writeln;
for i := 1 to mat.n do
for j := 1 to mat.m do
mat.a[i, j]:=random(100);
mat2 := mat;
xmin := k; xmax := mat.n - k + 1;
ymin := k; ymax := mat.m - k + 1;
if (xmin > xmax) or (ymin > ymax) then
begin
writeln('Nekorrektny vvod');
exit;
end;
writeln;
writeln('Ishodny massiv:');
for i := 1 to mat.n do
begin
for j := 1 to mat.m do
write(mat.a [j]:4);
writeln;
end;
sdvig(mat, mat2, k, p);
writeln;
writeln('Izmeneny massiv');
for i := 1 to mat.n do
begin
for j := 1 to mat.m do
write(mat2.a[j]:4);
writeln;
readln;
end;
end.