uses crt;
const max = 100;
path = 'C:\permut.txt';
type vector = array[1..max] of integer;
function b(m, i : integer) : integer;
begin
if (m mod 2 = 0) and (m > 2) then
if i < m - 1 then b := i
else b := m - 2
else b := m - 1;
end;
procedure perm(var p : vector; n, m : integer);
var i, pom : integer;
f : text;
begin
assign(f, path);
{$I-}
reset(f);
{$I+}
if ioresult = 0 then append(f)
else rewrite(f);
if m = 1 then
begin
for i := 1 to n do
write(f, p[i], ' ');
writeln(f);
end
else
for i := 1 to m do
begin
perm(p, n, m - 1);
if i < m then
begin
pom := p[b(m, i)];
p[b(m, i)] := p[m];
p[m] := pom;
end;
end;
close(f);
end;
var ch : char;
i, n : integer;
p : vector;
begin
clrscr;
repeat
write('Podaj n=');
readln(n);
for i := 1 to n do
p[i] := i;
perm(p, n, n);
ch := readkey;
until ch = #27;
end.
No i teraz procedura tworzy pusty plik
(czyżby procedura rewrite wykonywana była
więcej razy niż potrzeba )
Jak ten kod poprawić