Предмет: Информатика,
автор: Oops04
Pascal одномерный массив. Упорядочить каждые вторые ненулевые элементы последней четверти одномерного массива по убыванию обратных значений
Аноним:
Не знаю...
хотя опять же округлять или откидать дробную часть)
Выше я написал две возможные по логике формулы.
Для 19 получается 4+4+4+7 или 5+5+5+4, но для 17 получится 4+4+4+5 или 5+5+5+2. В любом варианте последняя длина - не четверть
Соотвественно , да
Ещё и что-то профили сломались, кликнув на некоторых пользователей кидает 404 ошибку)
Ну т.е. если длина не кратна 4, это порождает головную боль.
Ну...мой профиль тоже обычно дает ошибку. Это криворукость здешних сайтописателей. Они некоторые символы кириллице в хэше некорректно заменили. Такова, к примеру, буква Э в моем нике.
Понятно, а ещё постоянно почему-то с мобильной версии на полную кидает при переходе, когда я с телефона
Не знаю. Мобильная версия (на мой взгляд) - это зло и я ее даже не видел. Знаю по отзывам, что глючная.
Ответы
Автор ответа:
0
PascalABC.NET 3.4.0, сборка 1671 от 31.05.2018
Внимание! Если программа не работает, обновите версию!
begin
var n:=36;
var a:=ArrRandom(n,-50,50); a.Println;
var n4:=n div 4;
var (s1,s2):=a.Select((v,i)->(v,i)).TakeLast(n4).Where(t->t[0]<>0)
.Slice(1,2).OrderByDescending(t->1/t[0]).UnZipTuple;
foreach var t in s1.ZipTuple(s2.Sorted) do a[t[1]]:=t[0];
a.Println
end.
Внимание! Если программа не работает, обновите версию!
begin
var n:=36;
var a:=ArrRandom(n,-50,50); a.Println;
var n4:=n div 4;
var (s1,s2):=a.Select((v,i)->(v,i)).TakeLast(n4).Where(t->t[0]<>0)
.Slice(1,2).OrderByDescending(t->1/t[0]).UnZipTuple;
foreach var t in s1.ZipTuple(s2.Sorted) do a[t[1]]:=t[0];
a.Println
end.
Приложения:
Похожие вопросы
Предмет: Физкультура и спорт,
автор: m4z3d
Предмет: Математика,
автор: eline123
Предмет: География,
автор: danik10101
Предмет: Математика,
автор: ммотсршсщрсрм
Предмет: Математика,
автор: olesyapavlova1