Сдвиг массива на k элементов влево или вправо — Pascal(Паскаль)

Сдвиг влево на 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 элементов вправо:

  code: # pascal

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.

Leave a Comment

37 − 28 =