Заполнить массив из 12 частей случайными числами в промежутке [-12..12] и

Заполнить массив из 12 частей случайными числами в промежутке [-12..12] и выполнить реверс для каждой трети массива.
Пример:
Исходный массив:
4 -5 3 10 -4 -6 8 -10 1 0 5 7
Итог:
10 3 -5 4 -10 8 -6 -4 7 5 0 1
Есть готовая программка. Растолкуйте пожалуйста что да как.
const n=12;
var a:array[1..n] of integer;
i,k,x:integer;
begin
randomize;
writeln('Исходный массив');
for i:=1 to n do
begin
a[i]:=-12+random(25);
write(a[i]:4);
end;
writeln;
k:=n div 3;
for i:=1 to k div 2 do
begin
x:=a[i];
a[i]:=a[k-i+1];
a[k-i+1]:=x;
x:=a[k+i];
a[k+i]:=a[2*k-i+1];
a[2*k-i+1]:=x;
x:=a[2*k+i];
a[2*k+i]:=a[n-i+1];
a[n-i+1]:=x
end;
writeln('Инверсия третей массива');
for i:=1 to n do
write(a[i]:4);
end.

Задать свой вопрос
Егор
Пожалуйста, если хоть что нибудь понимаете, то помогите, это мне очень поможет
Геннадий Шламотов
А можно не пояснять это плотнище, а написать свою в несколько строчек?))
Аринка Отлашкина
*полотнище
Леня Шусторович
Конечно, спасибо огромное, мне очень необходимо
1 ответ
// PascalABC.NET 3.1, сборка 1200 от 13.03.2016
begin
  var a:=ArrRandom(12,-12,12); a.Println;
  var b:=a.Batch(a.Length div 3).Select(x-gt;x.Reverse);
  var k:=0;
  foreach var e1 in b do
    foreach var e2 in e1 do begin a[k]:=e2; Inc(k) end;
  a.Println
end.

Тестовое решение:
-7 -9 8 -11 -5 -3 -2 6 11 -7 4 -6
-11 8 -9 -7 6 -2 -3 -5 -6 4 -7 11
Ярослава Ксенева
Можно в ArrRandom(12,-12,12); первое 12 заменить на количество частей в массиве, а -12,12 - на границы для датчика случайных чисел.
Семён Шафнуллин
Хорошо, спасибо огромное!
Ева Чепакина
Основное - чтобы версия Паскаля была не ниже обозначенной: PascalABC.NET 3.1, сборка 1200 от 13.03.2016
Виктория
Её можно с официального веб-сайта брать
Дмитрий Потелов
У меня конкретно такая версия на компьютере.Спасибо еще раз!
Константин
А вот еще вопрос.Что такое k?
Алла Кустус
Объясню, но многословно. Эта версия языка непрерывно дорабатывается и пока в ней нет средства, чтоб разрезанную на три доли части последовательность элементов опять склеить в одномерный массив. Поэтому пригодился двойной цикл, чтоб пройти по каждому элементу результата разрезки и перестановок и "загнать" эементы вспять в этот массив. Переменная k - это как раз указатель индекса в массиве. Мы же пишем присваивание a[k]:=e2;
Vitalij Shelupin
Спасибо!
Лус Виталя
Нашлось более краткое и красивое решение. Заместо var k:=0 и 3-х последующих за ним строк достаточно написать b.SelectMany(x->x).Println
Арина
Спасибо!
, оставишь ответ?
Имя:*
E-Mail:


Последние вопросы
задание экономиоти Рассмотри ситуацию: человек живёт на Крайнем Се-вере. С помощью каких

Экономика.

Человек живет на Крайнем Севере. С помощью каких благ удовлетворяются потребности

Экономика.

там лежат три яйца.у дома рос клен.Это гнездо сойки.на клёне гнездо

Русский язык.

Тыныштық күйіндегі карусель 35 с-та 3,0 рад/с бұрыштық жылдамдықпен үдей қозғалады.

Разные вопросы.

Сочинение на тему "Русский язык не сможет умереть!"

Математика.

Приветствую! Меня зовут Станислав, я представляю компанию under.site. Хотел бы предложить интересное решение

Разные вопросы.

Масса трёх одинаковых пакетов чая 180г чему равна масса

Математика.

Газообразный аммиак объёмом 2.24 л (н.у.) был полностью поглощён 14.68 мл

Химия.

Упражнение 2 Выпишите глаголы и вставьте пропущенные буквы

Русский язык.

Радиус окружности, описанной около равностороннего треугольника, равен 6. Найдите сторону треугольника

Геометрия.

Добро пожаловать!

Для того чтобы стать полноценным пользователем нашего портала, вам необходимо пройти регистрацию.
Зарегистрироваться
Создайте собственную учетную запить!

Пройти регистрацию
Авторизоваться
Уже зарегистрированны? А ну-ка живо авторизуйтесь!

Войти на сайт