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