Uses
CRT;
Const
nmax = 100;
type
mas = array [1 .. nmax] of integer;
Var
a, b: mas;
i, n, imin, m, imin2: integer;
procedure sdvig(Var l: mas; iimin: integer; k: byte);
Var
r, j: integer;
begin
if iimin <> k then
begin
repeat
begin
inc(iimin);
for j := k downto 1 do
if (j = k) then
r := l[k]
else
l[j + 1] := l[j];
l[1] := r;
end;
until iimin = k;
end;
end;
procedure rez(Var l: mas; k: byte; c: char);
begin
writeln('Массив ', c, ' после сдвига: ');
for i := 1 to k do
write(l[i]:5);
end;
begin
ClrScr;
repeat
write('N: ');
readln(n);
until n in [1 .. nmax];
imin := 1;
writeln('Исходный массив A: ');
randomize;
for i := 1 to n do
begin
a[i] := random(10) - 3;
write(a[i]:5);
if a[i] < a[imin] then
imin := i;
end;
writeln;
sdvig(a, imin, n);
rez(a, n, 'A');
writeln;
repeat
write('M: ');
readln(m);
until m in [1 .. nmax];
imin2 := 1;
writeln('Исходный массив B: ');
for i := 1 to m do
begin
b[i] := random(10) - 3;
write(b[i]:5);
if b[i] < b[imin2] then
imin2 := i;
end;
writeln;
sdvig(b, imin2, m);
rez(b, m, 'B');
readln
end.