PawelG: Różnice pomiędzy wersjami
Z Lem
| Linia 14: | Linia 14: | ||
'''unit''' F: \textbf{'''procedure'''}; | '''unit''' F: \textbf{'''procedure'''}; | ||
'''var''' i: integer; | '''var''' i: integer; | ||
| − | + | '''begin''' | |
| − | + | '''if''' k=n+1 '''then''' | |
| − | + | '''call''' DrukujA; licz := licz+1 | |
| − | + | '''else''' | |
| − | + | '''for''' i:= 1 '''to''' n | |
| − | + | '''do''' | |
| − | + | '''if''' A[i]=0 '''then''' | |
A[i] := k; k := k+1; | A[i] := k; k := k+1; | ||
| − | + | '''call''' F; | |
k := k-1; A[i]:=0 | k := k-1; A[i]:=0 | ||
| − | + | '''fi'''; | |
| − | + | '''od'''; | |
| − | + | '''fi'''; | |
| − | + | '''return''' | |
| + | '''end''' F; | ||
'''begin''' | '''begin''' | ||
readln(n); | readln(n); | ||
| − | array A dim(1:n); | + | '''array''' A '''dim'''(1:n); |
'''for''' j := 1 '''to''' n '''do''' A[j] := 0 '''od'''; | '''for''' j := 1 '''to''' n '''do''' A[j] := 0 '''od'''; | ||
k :=1; | k :=1; | ||
Wersja z 11:01, 16 mar 2020
Poniżej znajdziesz niewielki program.
- Czy potrafisz odgadnąc co ten program robi i sformułować odpowiednie twierdzenie?
- Czy potrafisz je udowodnić?
program PawelG;\ \ (* autor Paweł Gburzyński, 1983, \cite{Zabo83}\ \ *)
var A: arrayof integer;
var n, k, j, licz: integer ;
unit DrukujA: procedure;
var j: integer
begin
writeln
end DrukujA;
unit F: \textbf{procedure};
var i: integer;
begin
if k=n+1 then
call DrukujA; licz := licz+1
else
for i:= 1 to n
do
if A[i]=0 then
A[i] := k; k := k+1;
call F;
k := k-1; A[i]:=0
fi;
od;
fi;
return
end F;
begin
readln(n); array A dim(1:n); for j := 1 to n do A[j] := 0 od; k :=1; licz:=0; call F; writeln(Bywaj``)
end PawelG