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

Оригинал статьи: 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.
 

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Подписаться
Уведомить о
guest
0 Комментарий
Межтекстовые Отзывы
Посмотреть все комментарии