Поменять местами две половины массива, сохраняя их порядок
Категория: Delphi/Pascal
2011-12-26 23:13:26
Дан массив целых чисел из 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
Поделиться: