const n = 15; Flag = 111;type Mas = array[1..n] of integer;procedure ShiftLeft(var A: Mas; nPos: integer);// Элементы массива A, начиная с номера nPos, сдвигаются на один к началу массива// Последний элемент массива заносится значением 111var i: integer;begin for i := nPos to n - 1 do A[i] := A[i + 1]; A[n] := Flagend;procedure ShiftRight(var A: Mas; nPos: integer);// Элементы массива A, начиная с номера nPos, сдвигаются на один к концу массива// Последний элемент массива теряется, элемент с номером nPos заносится значением 111var i: integer;begin for i := n downto nPos + 1 do A[i] := A[i - 1]; A[nPos] := Flagend;function Contains5(p: integer): Boolean;// Возвращает true, если в числе p есть хоть одна цифра 5// Возвращает false в противном случаеvar s: string;begin Str(p, s); Contains5 := (Pos('5', s) > 0)end;procedure DeleteAll5(var A: Mas);// Удаляет из массива А все элементы, содержащие цифру 5var i, j: integer;begin i := 1; // текущая позиция в массиве j := n; // количество непросмотренных элементов while j > 0 do begin if Contains5(A[i]) then ShiftLeft(A, i) else i := i + 1; j := j - 1 end;end;function Fold(var A: Mas; pStart: integer): integer;// Возвращает номер элемента в массиве А, значение которого кратно его номеру// pStart - номер элемента, с которого начинается просмотр// Если такого элемента не найдено, возвращается ноль.var i: integer;begin for i := pStart to n do if A[i] mod i = 0 then begin Fold := i; Exit end; Fold := 0end;procedure InsertK(var A: Mas; k: integer);// После всех элементов массива, кратных своему номеру,// вставляет значение k, сдвигая оставшиеся элементы// к концу массиваvar i, j: integer;begin i := 1; while i <= n do begin j := Fold(A, i); if j > 0 then begin ShiftRight(A, j); A[j] := k; i := j + 1 end else i := n + 1 endend;function GetFirstPos(var A: Mas): integer;// Возвращает номер первого положительного элемента в массиве А// Возвращает ноль, если таких элементов нет.var i: integer;begin i:=1; while i <= n do begin if A[i] > 0 then begin GetFirstPos := i; Exit end else i := i + 1 end; GetFirstPos := 0end;function GetLastNeg(var A: Mas): integer;// Возвращает номер последнего по порядку отрицательного элемента в массиве А// Возвращает ноль, если таких элементов нет.var i: integer;begin i:=n; while i >= 1 do begin if A[i] < 0 then begin GetLastNeg := i; Exit end else i := i - 1 end; GetLastNeg := 0end;procedure Swap(var A: Mas; p: integer; q: integer);// Обмен местами элементов массива A[p] и A[q]var s: integer;begin s := A[p]; A[p] := A[q]; A[q] := send;var M: Mas; k, i, j: integer;begin // Инициализация массива Randomize; writeln('Исходный массив'); for i := 1 to n do begin M[i] := random(70) - 20; write(M[i]:4) end; writeln; DeleteAll5(M); // Удаление элементов, содержащих цифру 5 writeln('После удаления элементов, содержащих цифру 5'); for i := 1 to n do write(M[i]:4); writeln; writeln('Введите значение k'); readln(k); InsertK(M, k); writeln('После вставки значения k'); for i := 1 to n do write(M[i]:4); writeln; i := GetFirstPos(M); if i > 0 then begin j := GetLastNeg(M); if j > 0 then begin Swap(M, i, j); writeln('После обмена местами пары элементов'); for i := 1 to n do write(M[i]:4); writeln; end endend.Тестовое решение:Исходный массив -2 -5 43 12 13 5 -7 9 27 5 47 45 28 34 21После удаления элементов, содержащих цифру 5 -2 43 12 13 -7 9 27 47 28 34 21 111 111 111 111Введите значение k222После вставки значения k 222 222 -2 43 12 13 222 -7 222 9 27 47 28 34 21После обмена местами пары элементов -7 222 -2 43 12 13 222 222 222 9 27 47 28 34 21