Оригинал статьи: http://www.cyberforum.ru/pascal/thread133142.html
Благодарен всем авторам, которые внесли свой вклад в сборку кода.
Сдвиг влево на k элементов:
var a:array[1..100] of integer; i,r,n,k,j:integer; begin Write('Количество элементов массива='); readln(n); writeln('Оригинал:'); for i := 1 to n do begin a[i] := random(10); write(a[i]:3); end; Writeln; Write('Величина сдвига='); readln(k); for i:=1 to k do begin for j:=1 to n do if (j=1) then r:=a[j] else a[j-1]:=a[j]; a[n]:=r; end; writeln('После сдвига'); for i:=1 to n do write(a[i]:3); end.
Сдвиг вправо на k элементов:
var a:array[1..100] of integer; i,r,n,k,j:integer; begin Write('Количество элементов массива='); readln(n); writeln('Оригинал:'); for i := 1 to n do begin a[i] := random(10); write(a[i]:3); end; Writeln; Write('Величина сдвига='); readln(k); for i:=1 to k do begin for j:=n downto 1 do if (j=n) then r:=a[n] else a[j+1]:=a[j]; a[1]:=r; end; writeln('После сдвига'); for i:=1 to n do write(a[i]:3); end.