Дан массив целых чисел из n элементов, заполненный случайным образом числами из промежутка [-50,50]. Поменять местами две половины массива, сохраняя их порядок. Если массив будет состоять из нечетного числа элементов,присоединить центральный элемент к любой его половине — 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 <> 0 then
  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.

Leave a Comment

− 2 = 2