ПАСКАЛЬ, помогите пожалуйста отсортировать по возрастанию отрицательные элементы массива....

0 голосов
180 просмотров

ПАСКАЛЬ, помогите пожалуйста отсортировать по возрастанию отрицательные элементы массива. вывести исходный массив и измененный массив. можно использовать любой метод сортировки.Массив заполнить случайными положительными и отрицательными числами


Информатика (103 баллов) | 180 просмотров
0

И как всегда, один и тот же вопрос: что делать с положительными элементами массива? Они остаются на своих местах?

0

От убывания по возрастанию отсортировать, т.е сначала отрицательные потом положительные

0

Т.е. отсортировать отрицательные, поместить их в начало массива, а после них расположить в исходном порядке неотрицательные?

0

Отсортировать отрицательные числа массива , после них написать потложительный

0

и вывести еще один исходный массив

0

Как это - "ЕЩЕ ОДИН ИСХОДНЫЙ"? Исходный же всего один?

0

Одной строкой вывести исходный,(чтобы видеть, что изменилось) другой строкой измененный

Дан 1 ответ
0 голосов
Правильный ответ

Const
  n = 10;

var
  a, b, c: array[1..n] of integer;
  i, j, kb, kc, t: integer;

begin
  Randomize;
  Writeln('Исходный массив');
  kb := 0; kc := 0;
  for i := 1 to n do
  begin
    a[i] := random(101) - 50;
    Write(a[i]:4);
    if a[i] < 0 then begin Inc(kb); b[kb] := a[i] end
    else begin Inc(kc); c[kc] := a[i] end
  end;
  Writeln;
  { теперь массив b содержит отрицательныые элементы, с - остальные }
  for i := 1 to kb - 1 do
    for j := 1 to kb - 1 do
      if b[j] > b[j + 1] then
      begin t := b[j]; b[j] := b[j + 1]; b[j + 1] := t end;
  { сливаем массивы b и c в массив а}
  i := 0;
  for j := 1 to kb do begin i := i + 1; a[i] := b[j] end;
  for j := 1 to kc do begin i := i + 1; a[i] := c[j] end;
  Writeln('Результирующий массив');
  for i := 1 to n do Write(a[i]:4);
  Writeln
end.

Тестовое решение:
Исходный массив
 -32  -8  43 -24   8 -45 -13  40  17  46
Результирующий массив
 -45 -32 -24 -13  -8  43   8  40  17  46


(142k баллов)
0

Огромная благодарность, можно попросить написать комментарии к программе(какая строчка, что выполняет)

0

Пожалуйста. В части комментариев - написано, что выполняет каждый блок. Переписывать на русский язык назначение каждого оператора - это дико бессмысленное занятие. Вы можете открыть учебник или просто набрать на поисковике ПАСКАЛЬ и через пробел первое слово оператора - узнаете, что и как он делает

0

Благодарю еще раз)

0

в первом блоке заполнение массива, вывод значений и одновременное разделение массива на два - с отрицательными и неотрицательными элементами. Далее сортировка массива отрицательных методом пузырька - алгоритм описан подробно в интернете. И последний блок сливает массивы, сначала пишет отсортированныЙ, потом ему "в хвост" массив из неотрицательных. Далее следует вывод результата.

0

Можно было все сделать в одном массиве, но там такой алгоритм будет, что черт ногу сломит....

0

В одномерном массиве размерностью n=10 отсортировать по возрастанию четные элементы массива.Вывести исходный и измененный массив.Можно использовать любой метод сортировки.

0

Нужна помощь еще)

0

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