Написать программу для циклического сдвига массива в право и лево
1)на k элементов
2)на 1 элемент

Ответы

Ответ дал: BobbyFresnel
0

===== PascalABC.NET =====

procedure ЛевыйСдвигK(var a: array of integer; k: integer);

begin

 var m := a.Length;

 k := k mod m;

 if k > 0 then

   a := a[k:] + a[:k]

end;

procedure ПравыйСдвигK(var a: array of integer; k: integer);

begin

 var m := a.Length;

 k := k mod m;

 if k > 0 then

   a := a[m - k:] + a[:m - k]

end;

procedure ЛевыйСдвиг(var a: array of integer) :=

a := a[1:] + a[0:1];

procedure ПравыйСдвиг(var a: array of integer);

begin

 var m := a.Length - 1;

 a := a[m:] + a[:m];

end;

begin

 // тест

 var a := ArrRandom(8, 10, 99);

 a.Println;

 ЛевыйСдвиг(a);

 a.Println;

 ПравыйСдвиг(a);

 a.Println;

 ЛевыйСдвигK(a, 3);

 a.Println;

 ПравыйСдвигK(a, 3);

 a.Println;

end.

Приложения:

EustassKid: а не могли бы вы на с++ написать
BobbyFresnel: Мог бы. Если бы: 1) В задании говорилось про С++ 2) У меня возникло желание на нем написать.
Вас заинтересует