• Предмет: Информатика
  • Автор: айвенго2
  • Вопрос задан 2 года назад

Дан массив целых чисел. Отсортировать по возрастанию только элементы массива, стоящие в ячейках с нечётными номерами. Паскаль​

Ответы

Ответ дал: Вованичикчка
2

// PascalABC.Net

// Первая программа, если необходимо выбрать нечетные элементы и их отсортировать.

begin

   var a := ArrRandom(10);

   writeln('Исходный массив: ');

   a.PrintLn(', ');

   writeln('Отсортированный массив нечетных элементов: ');

   a.Where(e -> e mod 2 <> 0).OrderBy(e -> e).Print(', ');

end.

// Вторая программа, если необходимо в исходном массиве отсортировать нечетные значения

begin

   var a := ArrRandom(10);

   writeln('Исходный массив: ');

   a.PrintLn(', ');

   writeln('Отсортированный массив нечетных элементов: ');

   var odd := a.Select((e, i) -> (i, e)).Where(e -> e[1] mod 2 <> 0).OrderBy(e -> e[1]);

   var sortedOdd := odd.Zip(odd.Select(e -> e[0]).OrderBy(e -> e), (f, s) -> (s, f[1]));

   foreach var e in sortedOdd do

       a[e[0]] := e[1];

   a.PrintLn(', ');

end.


BobbyFresnel: Какое-то очень знакомое решение...
BobbyFresnel: Но неверное по-моему. С другой стороны, вопрос сформулирован плохо. Непонятно, что с остальными элементами делать. Если отбросить, решение првильное. Если оставить на местах (обычно в таких задачах так и поступают), решение неверное...
Вованичикчка: хмм, я даже и не вчитывался
Вованичикчка: ну тут задача не сложная
Вованичикчка: сейчас выполню
Вованичикчка: выглядит, кончено, костыляво
BobbyFresnel: У меня было другое решение, с меньшим числом прогонов по массивам, но внешне тоже не шибко просто выглядит: https://znanija.com/task/35232324
Вованичикчка: хмм, я опять неправильно понял задание. Я сделал сортировку нечетных элементов, а не элементов под нечетными индексами
Вованичикчка: поэтому у меня так много "прогонов по массивам"
Вас заинтересует