Поменять местами две половины массива, сохраняя их порядок

Дан массив целых чисел из n элементов, заполненный случайным образом числами из промежутка [-50,50]. Поменять местами две половины массива, сохраняя их порядок. Если массив будет состоять из нечетного числа элементов,присоединить центральный элемент к любой его половине.

code: #pascal
 uses crt;
var m:array[1..50]of integer;
    n,i,l,x:integer;
begin
clrscr;
write('n=');readln(n);
for i:=1 to n do
  begin
   m[i]:=i;          //для наглядности введем числа по порядку
   write(m[i],' ');
  end;
readln;
l:=n div 2;
if n mod 2=0 then
for i:=1 to n div 2 do
   begin
     x:=m[i];m[i]:=m[i+l];
     m[i+l]:=x;
   end  else
if n mod 2<>0then
   begin
      x:=m[(n div 2)+1];    //ставим средний элемент на первую позицию
      for i:=(n div 2)+1 downto 1 do
      m[i]:=m[i-1];
      m[1]:=x;
//Для того, чтобы поставить средний элемент на последнее место, все делается в зеркальном отображении.
      for i:=2 to (n div 2)+1 do
         begin
           x:=m[i];m[i]:=m[i+l];
           m[i+l]:=x;
         end;
   end;
for i:=1 to n do
write(m[i],' ');
readln;
end.

автор: puporev

Поделиться:

Похожие статьи: