Pascal одномерный массив. Упорядочить каждые вторые ненулевые элементы последней четверти...

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

Pascal одномерный массив. Упорядочить каждые вторые ненулевые элементы последней четверти одномерного массива по убыванию обратных значений


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

Не знаю...

0

хотя опять же округлять или откидать дробную часть)

0

Выше я написал две возможные по логике формулы.

0

Для 19 получается 4+4+4+7 или 5+5+5+4, но для 17 получится 4+4+4+5 или 5+5+5+2. В любом варианте последняя длина - не четверть

0

Соотвественно , да

0

Ещё и что-то профили сломались, кликнув на некоторых пользователей кидает 404 ошибку)

0

Ну т.е. если длина не кратна 4, это порождает головную боль.

0

Ну...мой профиль тоже обычно дает ошибку. Это криворукость здешних сайтописателей. Они некоторые символы кириллице в хэше некорректно заменили. Такова, к примеру, буква Э в моем нике.

0

Понятно, а ещё постоянно почему-то с мобильной версии на полную кидает при переходе, когда я с телефона

0

Не знаю. Мобильная версия (на мой взгляд) - это зло и я ее даже не видел. Знаю по отзывам, что глючная.

Дан 1 ответ
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.

image
(150k баллов)