profile

Опубликовано 6 лет назад по предмету Информатика от 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. Ответ
      Ответ дан Аккаунт удален
      В каждой функции есть комментарий, поясняющий её назначение.

Войдите или зарегистрируйтесь, чтобы добавить ответ или свой вопрос на сайт


Другие вопросы
Елена Колиух
Геометрия - 9 месяцев назад
Шалаш
Другие предметы - 9 месяцев назад

Пытался написать сочинение по егэ по русскому не могу понять как,написать хотелось бы пример увидеть по этому тексту. (1)в солнечный день я приехал в старинный посёлок гусь-железный полюбоваться на озеро, искупаться, поплавать в нём. (2)доехал до речки, поднялся на бугор, глянул и... (3)о ужас! (4)нет озера. (5)по широкой впадине, окаймлённой дальней опушкой бывшего прибрежного леса, текла, извиваясь, узкая, местами пересыхающая речушка. (6)и старинной плотины, высокой, кирпичной, с чугунными шлюзами, в тёмных казематах которой, по преданию, разбойная братия чеканила фальшивые деньги, тоже не было. (7)шлюзы, регулировавшие сток, убрали, засыпали – и затянуло озеро тиной да ряской. (8)на месте этом проходила теперь обыкновенная дорожная насыпь; дорога делала крутой поворот, огибала белый двухэтажный барский дом, похожий на длинную казарму, заломанный чахлый парк и снова вырывалась на простор. (9)главный врач детского санатория, размещённого в барском доме, показал мне давние фотографии этого исчезнувшего озера, высокой кирпичной плотины, торговых рядов с доисторическими портиками, он водил по внутренним покоям огромного дома, заново перегороженного, приспособленного для иных надобностей. (10)переделка и ремонт когда-то выполнены были наспех: половицы скрипят и хлябают под ногами, двери перекошены, в оконные рамы задувает свежий ветерок. – (11)сохранилась хоть одна комната от давнего времени? – спросил я. – (12)с полами, дверями и окнами? – (13)полы, двери и прочее – всё порастащили. (14)а вот стены и потолок сохранились в одном месте. (15)идёмте, покажу. (16)он ввёл меня в зал, кажется, в теперешнюю столовую, с белыми строгими пилястрами, с лепным потолком. – (17)полы здесь были, говорят, из наборного паркета, двери из орехового дерева с бронзовой инкрустацией, люстра позолоченная висела. – (18)жалко, – говорю, – что не сохранилось всё это. – (19)о чём жалеть? (20)архитектурной ценности этот дом не имеет, – сказал доктор. (21)я взглянул на него с удивлением. (22)не шутит ли? (23)нет, смотрит прямо в глаза, даже с каким-то вызовом. (24)задиристый хохолок на лысеющем лбу топорщится, как петушиный гребешок. – (25)как не имеет ценности? – говорю. – (26)это ж дом! (27)большой, крепкий, красивый, полный когда-то дорогого убранства. – (28)барские покои, и больше ничего. (29)таких в россии тысячи. – (30)так ведь и народу нашему пригодились бы такие покои. – (31)людям нашим нужны другие ценности. (32)вы ещё храм пожалейте. (33)теперь это модно. – (34)а что, не жаль храма? – (35)и храм цены не имеет. (36)архитектура путаная. (37)специалисты приезжали, говорят – эклектика. (38)потом, правда, всё-таки восстановили храм этот. – (39)и парка не жаль? – (40)парк – природа, и больше ничего. (41)в одном месте убавилось, в другом прибавилось. (42)в любую минуту его насадить можно. (43)мы стояли возле окна, внизу под нами раскинулся обширный посёлок. – (44)смотрите, – говорю, – сколько домов. (45)приличные дома, большинство новых. – (46)здесь живёт в основном торговый люд, кто чем торгует, работы хватает. – (47)вот и хорошо, – говорю. – (48)увеличился посёлок за полвека? – (49)увеличился. – (50)а теперь подумайте вот о чём: раньше, ну хоть ещё в тридцатые годы, здесь меньше жило народу, но успевали не только свои рабочие дела делать. (51)ещё и плотину чинили, озеро в берегах держали и парк обихаживали. (52)а теперь что ж, времени на это не хватает или желания нет? – (53)а это, – говорит, – знакомый мотив. (54)это всё ваше писательское ворчание. (55)что озеро спустили – это вы заметили. (56)что над каждой крышей телевизионная тарелка поставлена – этого вы не замечаете. (57)спорить с ним трудно, почти невозможно: доводы ваши он не слушает, только глаза навострит, тряхнёт головой и чешет без запинки, как будто доклад читает… – (58)есть писатели-патриоты. (59)их книги читают, фильмы по книжкам их смотрят наравне с футболом и хоккеем, потому что яркие, незабываемые образы. (60)а есть писатели-ворчуны, которые всем недовольны. (61)и всё им что-то надо. (62)вот одного такого лечили, а он нас же, медиков, опозорил в своём последнем сочинении. (63)за что, спрашивается? (64)да, не раз вспомянешь в дальней дороге бессмертного писателя земли русской николая васильевича гоголя: «россия такая уж страна – стоит высмеять одного околоточного надзирателя, как вся полиция обидится».