Есть ответ 👍

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

155
455
Посмотреть ответы 2

Ответы на вопрос:

fff567
4,4(35 оценок)

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
Sh4urma
4,5(21 оценок)

Деление до конца  без штрафов  возможно, если количество орехов в  кучке будет какой-либо степенью двойки (2, 4, 8, 16, 32, 64, 128, 256, 512).  число  577 - нечетно, следовательно, его можно представить < четное> +< нечетное> . при делении 576+1 получим первый штраф. число 576 не является степенью двойки, поэтому необходимо опять поделить орехи на неравные кучки: 512+64 (второй штраф). 512 и 64 - степени двойки, значит дальнейшее разделение можно выполнить без штрафов. можно делить, например, так: 1. 512 и 65 орехов (штраф 1 рубль) 2. 65 делим на 2 кучки: 64 и 1 (штраф 1 рубль) 3 и все следующие операции: кучки из  512 и 64  орехов делим на равные кучки (512:   256 и 256, 256: 128 и 128;   64:   32 и 32, 32: 16 и 16  и т. получаем, что минимальная сумма штрафа = 2 рубля.

Реши свою проблему, спроси otvet5GPT

  • Быстро
    Мгновенный ответ на твой вопрос
  • Точно
    Бот обладает знаниями во всех сферах
  • Бесплатно
    Задай вопрос и получи ответ бесплатно

Популярно: Информатика

Caktus Image

Есть вопросы?

  • Как otvet5GPT работает?

    otvet5GPT использует большую языковую модель вместе с базой данных GPT для обеспечения высококачественных образовательных результатов. otvet5GPT действует как доступный академический ресурс вне класса.
  • Сколько это стоит?

    Проект находиться на стадии тестирования и все услуги бесплатны.
  • Могу ли я использовать otvet5GPT в школе?

    Конечно! Нейросеть может помочь вам делать конспекты лекций, придумывать идеи в классе и многое другое!
  • В чем отличия от ChatGPT?

    otvet5GPT черпает академические источники из собственной базы данных и предназначен специально для студентов. otvet5GPT также адаптируется к вашему стилю письма, предоставляя ряд образовательных инструментов, предназначенных для улучшения обучения.

Подпишись на наш телеграмм канал

GTP TOP NEWS