profile
Размещено 5 лет назад по предмету Информатика от nlo140

Дан
массив целых чисел (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, сдвигаются на один к началу массива
    // Последний элемент массива заносится значением 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


    1. Ответ на вопрос
      Ответ на вопрос дан Аккаунт удален
      Могу только удивится преподавателям, дающим школьникам подобные задачи...
    2. Ответ на вопрос
      Ответ на вопрос дан zoomisus
      что делает эта функция function Fold
    3. Ответ на вопрос
      Ответ на вопрос дан Аккаунт удален
      В каждой функции есть комментарий, поясняющий её назначение.
Не тот ответ на вопрос, который вам нужен?
Найди верный ответ
Самые новые вопросы
tegysigalpa2012
Русский язык - 5 лет назад

Помогите решить тест по русскому языку тест по русскому языку «местоимение. разряды местоимений» для 6 класса 1. укажите личное местоимение: 1) некто 2) вас 3) ни с кем 4) собой 2. укажите относительное местоимение: 1) кто-либо 2) некоторый 3) кто 4) нам 3. укажите вопросительное местоимение: 1) кем-нибудь 2) кем 3) себе 4) никакой 4. укажите определительное местоимение: 1) наш 2) который 3) некий 4) каждый 5. укажите возвратное местоимение: 1) свой 2) чей 3) сам 4) себя 6. найдите указательное местоимение: 1) твой 2) какой 3) тот 4) их 7. найдите притяжательное местоимение: 1) самый 2) моего 3) иной 4) ничей 8. укажите неопределённое местоимение: 1) весь 2) какой-нибудь 3) любой 4) этот 9. укажите вопросительное местоимение: 1) сколько 2) кое-что 3) она 4) нами 10. в каком варианте ответа выделенное слово является притяжательным местоимением? 1) увидел их 2) её нет дома 3) её тетрадь 4) их не спросили

Информация

Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.