Сдвиг массива на k элементов влево или вправо

Не менее возникает вопрос о сдвиге массива на k элементов влево или вправо.
Было
1 2 3 4 5

Стало
5 1 2 3 4

Сдвиг влево на k элементов:
var
   a:array[1..100] of integer;
   i,r,n,k,j:integer;
begin
 read(n,k);  {k обозначает величину сдвига}
 for i:=1 to n do
  read(a[i]);
 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;
 for i:=1 to n do
  write(a[i],' ');
 readln
end.

Сдвиг на k элементов вправо:
var
   a:array[1..100] of integer;
   i,r,n,k,j:integer;
begin
 read(n,k);  {k обозначает величину сдвига}
 for i:=1 to n do
  read(a[i]);
 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;
 for i:=1 to n do
  write(a[i],' ');
 readln
end.
Теги:
сдвиг, массив
Добавлено: 22 Сентября 2013 12:24:58 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...