Сформировать массив из степеней двоек - 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.
- Конец основного блока программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д