Witam,
tym razem w Pascalu musiałem opracować programik, który by wczytywał jakiś ciąg znaków, następnie na wyjściu wypisywał liczbę wszystkich anagramów, które można utworzyć z podanego łańcucha liter. Udało mi się zakodzić coś takiego:
const
P:array [1..50] of word = (2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229);
var
A:string;
T:array['a'..'z'] of byte;
R:array[1..50] of byte;
Zn:char;
N,K,S,W:longint;
begin
readln(a);
N:=length(a);
For k:=1 to N do T[A[K]]:=T[A[K]]+1;
For K:=2 to N do
begin
s:=1; w:=k;
while w>1 do
begin
while w mod P[S]=0 do
begin R[S]:=R[S]+1;w:=w div P[S] end;
s:=s+1
end
end;
For Zn:='a' to 'z' do
if t[Zn]>1 then
begin
s:=1; w:=t[zn];
while w>1 do
begin R[S]:=R[S]-1;w:=w div P[S] end;
s:=s+1;
end
end.
s:=50;
while R[S]=0 do s:=s-1;
for k:=1 to s do write(R[K], ' ');
writeln
end.
Jednak program nic nie wypisuje. Prosiłbym o wskazówki, gdzie popełniam błąd :)
Gdyby coś okazało się nie przejrzyście przeze mnie napisane, w załączniku dodaję oryginalną treść polecenia.