Дан массив целых чисел (n=15), заполненный случайным образом числами из промежутка [-20,50]. − удалить из него все элементы, в которых есть цифра 5.− вставить число k после всех элементов, кратных своему номеру (k вводить с кла...

Дан массив целых чисел (n=15), заполненный случайным образом числами из промежутка [-20,50]. − удалить из него все элементы, в которых есть цифра 5. − вставить число k после всех элементов, кратных своему номеру (k вводить с клавиатуры). − поменять местами первый положительный и последний отрицательный элементы. На паскале)
Гость
Ответ(ы) на вопрос:
Гость
const   n = 15;   Flag = 111; type   Mas = array[1..n] of integer; procedure ShiftLeft(var A: Mas; nPos: integer); // Элементы массива A, начиная с номера nPos, сдвигаются на один к началу массива // Последний элемент массива заносится значением 111 var   i: integer; begin   for i := nPos to n - 1 do     A[i] := A[i + 1];   A[n] := Flag end; procedure ShiftRight(var A: Mas; nPos: integer); // Элементы массива A, начиная с номера nPos, сдвигаются на один к концу массива // Последний элемент массива теряется, элемент с номером nPos заносится значением 111 var   i: integer; begin   for i := n downto nPos + 1 do     A[i] := A[i - 1];   A[nPos] := Flag end; 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); // Удаляет из массива А все элементы, содержащие цифру 5 var   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 := 0 end; 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   end end; 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 := 0 end; 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 := 0 end; 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] := s end; 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   end end. Тестовое решение: Исходный массив   -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 Введите значение k 222 После вставки значения 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
Не нашли ответ?
Ответить на вопрос
Похожие вопросы