• Дан
    массив целых чисел (n=15),
    заполненный случайным образом числами из промежутка [-20,50].



    удалить из него все элементы, в которых есть цифра 5.



    вставить число k
    после всех элементов, кратных своему номеру (k вводить с клавиатуры).



    поменять местами первый положительный и последний отрицательный элементы.
    На паскале)

Ответы 1

  • 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
    • Автор:

      plutocase
    • 5 лет назад
    • 0
  • Добавить свой ответ

Еще вопросы

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years