Дан массив а из n целых чисел ,сортировать нечетные элементы массива в порядке...

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

Дан массив а из n целых чисел ,сортировать нечетные элементы массива в порядке убывания(Паскаль)


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

Нечетные по значению или по порядковому номеру? И еще: те элементы, которые не сортировать - они на своих местах должны остаться?

0

1) нечетные по значению(1 3 5) 2) на своих местах

0

Тогда это не такая уж тривиальная задача...

0

Если даже это обменная сортировка, нужно при обмене запоминать позиции элементов.

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

Const n = 5;
var
  a: array [1..n] of integer;
  i,l,m,k: integer;
begin
  for i := 1 to n do read(a[i]);
  l := 1;
  while l < n do
    begin
    while (a[l] mod 2 = 0) and (l < n) do l := l + 1;
    if l < n then
      begin
      k := l;
      m := a[l];
      for i := l+1 to n do
        if a[i] mod 2 <> 0 then
        if a[i] > m then
          begin
          m := a[i];
          k := i
          end;
      a[k] := a[l];
      a[l] := m;
      l := l + 1
      end;
    end;
  for i := 1 to n do write(a[i],' ')
end.

(8.5k баллов)
0

Кто-то поспешил с отметкой лучшего ответа. Введите значения 1 48 -7 -15 13 и получите неверный ответ 13 48 1 -15 -7

0

Действительно, спасибо. В строке " if a[i] mod 2 = 1 then " нужно заменить "= 1" на "<> 0". (так как mod для отрицательного a[i] тоже отрицательный)