Предмет: Информатика, автор: daryaja2011

Дан вектор размером n, отсортировать первую половину вектора по убыванию

Ответы

Автор ответа: Аноним
0

PascalABC.NET 3.4.2, сборка 1881 от 19.11.2018

Внимание! Если программа не работает, обновите версию!

begin

 var V := ArrRandom(ReadInteger('n='), -50, 50);

 V.Println;

 var k := V.Length;

 k := (k.IsOdd ? (k + 1) : k) div 2;

 V := (V[:k].OrderByDescending(t -> t) + V[k:]).ToArray;

 V.Println;

end.

Пример

n= 13

27 -32 47 -45 33 28 -39 20 26 3 19 -35 5

47 33 28 27 -32 -39 -45 20 26 3 19 -35 5

Приложения:

Аноним: Если надо "продолжить", вопрос так и нужно давать, прикладывая Ваш код.
daryaja2011: Что это значит "V.Println;" ?
daryaja2011: и вот это "V := (V[:k].OrderByDescending(t -> t) + V[k:]).ToArray;" ?
Аноним: Чтобы люди понимали, что Вам нужно не современное решение в 6 строчек, а архаичное в два с половиной десятка строк.
Аноним: V.Println означает требование вывести содержимое V
Аноним: Если программу загрузить, то подведя курсор к любому незнакомому месту, получаете подсказку что это.
Аноним: V[:k] - это срез (часть) массива от его начала, до элемента с индексом k
daryaja2011: Блин, а можно как нибудь по проще написать?
Аноним: У Вас неверная терминология. Если есть два решения, одно в 6 строк, а второе, например, в 25, ясно что проще то, которое короче. Другой вопрос, что лично Вам оно непонятно, но это же Ваша проблема, верно же? Исходит она от того, что Вы не указали версию языка, в которой нужен код. Более того, Вы ВООБЩЕ НЕ НАПИСАЛИ, что код нужен на Паскале!
Аноним: Могли получить код на С, Джаве, Питоне, Бейсике...
Похожие вопросы