Сформировать массив из степеней двоек - Pascal
Формулировка задачи:
Необходимо сформировать одномерный массив элементы которого определяются выражением an=2n. Элементы полученного массива отсортировать по убыванию методом вставки. Помогите решить!!!!!!!!
Решение задачи: «Сформировать массив из степеней двоек»
textual
Листинг программы
procedure out_arr(s: string; var x: array of word);
var i: integer;
begin
writeln(s);
for i := low(x) to high(x) do write(x[i], ' ');
writeln
end;
var a: array [1..16] of word;
i, j: integer;
k: word;
begin
a[1] := 1;
for i := 2 to 16 do a[i] := a[i - 1] * 2;
out_arr('Исходный массив:', a);
for j := 2 to 16 do
begin
k := a[j];
i := j - 1;
while (i > 0) and (a[i] < k) do
begin
a[i + 1] := a[i];
dec(i)
end;
a[i + 1] := k
end;
out_arr('Отсортированный массив:', a);
readln
end.
Объяснение кода листинга программы
- Procedure out_arr(s: string; var x: array of word)
- Процедура out_arr принимает два параметра: строку
sв качестве описания массива и массив словx.
- Процедура out_arr принимает два параметра: строку
- var i: integer
- Объявляется переменная
iтипа integer.
- Объявляется переменная
- begin
- Начало основного блока программы.
- var a: array [1..16] of word
- Объявляется массив
aразмером от 1 до 16 слов.
- Объявляется массив
- var i, j: integer
k: word
- Объявляются переменные
iиjтипа integer, а также переменнаяkтипа word.
- Объявляются переменные
- a[1] := 1
- Присвоение элементу с индексом 1 значение 1.
- *for i := 2 to 16 do a[i] := a[i - 1] 2**
- Цикл от 2 до 16, в котором каждому элементу массива
aс индексомiприсваивается произведение предыдущего элемента на 2.
- Цикл от 2 до 16, в котором каждому элементу массива
- out_arr('Исходный массив:', a)
- Вызов процедуры
out_arrс описаниемИсходный массив:и массивомaв качестве параметров.
- Вызов процедуры
- for j := 2 to 16 do
- Цикл от 2 до 16.
- k := a[j]
- Присвоение переменной
kзначения элемента массиваaс индексомj.
- Присвоение переменной
- i := j - 1
while (i > 0) and (a[i] < k) do
a[i + 1] := a[i]
dec(i)
a[i + 1] := k
- Запуск вложенного цикла для сортировки вставками.
- out_arr('Отсортированный массив:', a)
- Вызов процедуры
out_arrс описаниемОтсортированный массив:и массивомaв качестве параметров.
- Вызов процедуры
- readln
- Ожидание ввода пользователем.
- end.
- Конец основного блока программы.