Вводится количество элементов, затем сами элементы, затем целое число, обозначающее количество позиций циклического сдвига (>0 вправо, <0 влево, 0=сдвиг не осуществляется). Осуществить циклический сдвиг - Pascal(Паскаль)

Program Zadacha;
 
type
   mas = array[1..100] of integer;
var
 i,j,k,n:integer;
 a:mas;
 
procedure vpravo(k,n:integer; var b:mas);
var
 q:integer;
begin
   for i:=1 to k do begin
      for j:=n downto 1 do
         if j=n then q:=b[n] else begin
            b[j+1]:=b[j];
         end;
      b[1]:=q;
   end;
end;
 
procedure vlevo(k,n:integer; var b:mas);
var  q:integer;
begin
k:=k mod n;
  for i:=1 to k do begin
      for j:=1 to n do
         if j=1 then q:=b[j] else begin
            b[j-1]:=b[j];
         end;
      b[n]:=q;
   end;
end;
 
begin
 write('Vvedite kolichestvo elementov: '); readln(n);
 for i:=1 to n do begin
   write('Vvedite ',i,' element : '); readln(a[i]);
 end;
 write('Vvedite kol-vo pozicii: '); readln(k);
 if(k>0) then vpravo(k, n, a)
  else if k<0 then vlevo(abs(k), n, a);
 for i:=1 to n do write(a[i],' ');
 
 readln;
end.

Результат работы программы

Leave a Comment

27 + = 36