Одномерный массив размерностью 2n - Free Pascal
Формулировка задачи:
Друзья выручайте!!! Горю!!! Сроки сдачи жмут...
Одномерный массив размерностью 2n, где n — целое положительное число, заполнен случайными положительными целыми числами. Изменить массив по следующему правилу: в первую ячейку поместить модуль разности между значениями первой и второй ячеек, во вторую — модуль разности между значениями второй и третьей ячеек, … в последнюю — модуль разности между значениями последней и первой ячеек. Определить, сколько понадобится таких преобразований, прежде чем массив будет состоять из одних нулей.
Решение задачи: «Одномерный массив размерностью 2n»
textual
Листинг программы
const n=2; type mas=array[1..2*n] of integer; var a:mas; i,j,l:integer; s:string; procedure print(a:mas;s:string); var i:integer; begin writeln(s); for i:=1 to 2*n do write (a[i]:4); writeln; end; function check(a:mas):boolean; var i:integer; ok:boolean; begin ok:=true; for i:=1 to 2*n do if a[i]>0 then ok:=false; check:=ok; end; begin randomize; for i:=1 to 2*n do a[i]:=random(100); j:=0; print(a,'Исходный массив:'); repeat l:=a[1]; for i:=1 to 2*n-1 do a[i]:=abs(a[i]-a[i+1]); a[2*n]:=abs(l-a[2*n]); inc(j); str(j,s); print(a,s+'-ая итерация:'); until check(a); end.
Объяснение кода листинга программы
- Объявлены константа
n(размерность массива), тип массиваmasи переменныеa,i,j,l,s. - В функции
printвыводится строкаs, а затем элементы массиваaс шагом 4. - В функции
checkпроверяется, все ли элементы массиваaположительны. - В основном блоке кода инициализируются элементы массива
aслучайными числами. - Цикл
repeat-untilвыполняется до тех пор, пока все элементы массиваaне станут положительными. - На каждой итерации цикла выводится текущий массив, а затем элементы вычисляются как абсолютное значение разности каждого элемента с последующим элементом.
- Последний элемент массива вычисляется как абсолютное значение разности последнего элемента и
l. - Переменная
jинкрементируется на каждой итерации цикла. - Строка
sформируется путем преобразования переменнойjв строку. - После каждой итерации цикла вызывается функция
printдля вывода текущего массива и строки, представляющей текущую итерацию. - Цикл продолжается до тех пор, пока все элементы массива
aне станут положительными.