![]() |
Eugeniusz Jakubas |
Stąd można pobrać teksty źródłowe poniższych 57 programów w Pascalu pr-pascal.zip - 34 kB
19. Permutacje
program Permutacje;
uses crt;
var n,k,dl_slowa,il_permut,spr,poz,i,max:longInt;
slowo_wyj,slowo_0,slowo,slowo_st:string;
x:char;
t:array[1..255] of integer;
key:char;
const slowo_max:string='abcdefghijklmnoprstuvwxyz';
procedure sprawdz_i_wstaw(x:char;nr:integer);
begin
for k:=poz to dl_slowa do
if (slowo_st[k]=x) and (t[ord(x)]=0)
then begin
slowo[nr]:=x; spr:=1;
t[ord(x)]:=1;
end;
end;
begin
clrScr;
slowo_0:='AABEGLR';
dl_slowa:=length(slowo_0);
slowo:=copy(slowo_max,1,dl_slowa);
slowo_st:=slowo;
il_permut:=1;
writeLn(il_permut,'. ',slowo_0);
max:=1; for n:=1 to dl_slowa do max:=max*n;
repeat
for n:=1 to 255 do t[n]:=0;
n:=1;
while slowo[dl_slowa-n]>slowo[dl_slowa-n+1] do n:=n+1;
poz:=dl_slowa-n;
i:=0;
spr:=0;
repeat
x:=char(ord(slowo[poz])+1+i);
sprawdz_i_wstaw(x,poz);
i:=i+1;
until spr=1;
x:='!';
for n:=1 to dl_slowa-poz do
begin
i:=0;
spr:=0;
repeat
x:=char(ord(x)+1);
sprawdz_i_wstaw(x,poz+n);
i:=i+1;
until spr=1;
end;
il_permut:=il_permut+1;
slowo_wyj:='';
for i:=1 to dl_slowa do slowo_wyj:=slowo_wyj+slowo_0[ord(slowo[i])-96];
writeLn(il_permut,'. ',slowo_wyj);
slowo_st:=slowo;
{ key:=readKey;}
until (slowo_wyj='ALGEBRA') or (il_permut=max);
readLn;
end.
|
![]() |