Получить все перестановки элементов 1, ., 6 - Pascal
Формулировка задачи:
получить все перестановки элементов 1, ..., 6
Решение задачи: «Получить все перестановки элементов 1, ., 6»
textual
Листинг программы
const n=6;
var
i, j, k, t: Integer;
a: array[1..n] of Integer;
begin
for i:=1 to n do a[i]:=i;
repeat
for i:=1 to n do Write(' ',a[i]); WriteLn;
i:=n; while a[i-1]>a[i] do Dec(i);
k:=i-1; t:=a[k];
while a[i+1]>t do Inc(i);
a[k]:=a[i]; a[i]:=t;
i:=k+1; j:=n;
while i<j do begin
t:=a[i]; a[i]:=a[j]; a[j]:=t;
Inc(i); Dec(j);
end;
until k=0;
end.
Объяснение кода листинга программы
- Объявляется константа
nсо значением 6. - Объявляются переменные
i,j,kиtцелочисленного типа. - Создается массив
aразмером 6 элементов. - Инициализируется массив
aзначениями от 1 до 6 с помощью циклаfor. - Начинается цикл
repeat, который выполняется до тех пор, пока условие (k=0) не будет выполнено. - Выводятся на экран все перестановки элементов от 1 до 6.
- Устанавливается значение
iравноеn, и происходит циклwhile, в которомiуменьшается до тех пор, покаa[i-1]большеa[i]. - Значение
kустанавливается какi-1, и значениеtустанавливается какa[k]. - Происходит цикл
while, в которомiувеличивается до тех пор, покаa[i+1]большеt. - Находит место для обмена значениями, и происходит обмен между
a[k]иa[i]. - Устанавливаются значения
iиj, и происходит циклwhile, в котором выполняется обмен значений элементов массиваaмеждуiиj, покаiменьшеj. - Цикл
repeatзавершается, и программа завершает выполнение.