есть задача, условие которой - вывести на экран все перестановки чисел от 1 до n, без повторов
есть полностью рабочий код, но с одним небольшим, но существенно непонятным моментом
огромная просьба пояснить, каким образом строятся и выводятся на экран подстановки
ниже привожу код программы, часть требующую пояснения выделяю жирным шрифтом
program perestanovki;
uses crt;
const maxN=100;
type massiv=array[1..maxN] of integer;
type proverka=array[1..maxN] of boolean;
var
b,n,c:integer;
w:massiv;
a:proverka;
otvet:char;
{ !!! начало непонятного кода !!! }
procedure print(a,b:integer;q:proverka);
var i,j:integer;
otv:char;
begin
b:=b+1;
for i:=1 to a do
begin
if q[i]=false then
begin
w[b]:=i;
q[i]:=true;
print(a,b,q);
q[i]:=false;
end;
end;
if b=a then
begin
for j:=1 to a do write(w[j]);
writeln;
end;
end;
{ !!! конец непонятного кода !!! }
begin
clrscr;
b:=0;
c:=0;
repeat
write('vvedite natural''noe chislo: ');
readln(N);
if n>maxN then writeln('chislo ne doljno prevyshat'' ',maxN);
if n<=0 then writeln('chislo doljno byt'' polojitel''nym');
until (n<=maxN) and (n>0);
print(n,b,a);
write('complete.. press any key..');
readkey;
end.
заранее спасибо!
Сообщение отредактировано: Sideful -