Zliczanie anagramów danego ciągu - problem z wyświetleniem odpowiedzi.

0

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.

0

Radzę to zrobić bardziej matematycznie, a nie przez głupie zliczanie.

0

Taką mi metodę podsunięto i tak zrobiłem :) spróbuję potem jeszcze raz napisać, tak jak mówisz, jednak obecnie muszę dokończyć przez zliczanie niestety. Wracając do pytania, czemu program nic nie zwraca? :)

0

Paskudne formatowanie... Masz dwa endy z kropką

0

Gdy przy pierwszym end stawiam średnik, kompilator wywala fatal error; mówiąc, że w tym miejscu musi być kropka.

1

Zrobiłeś sobie zły nawyk nie stawiania średnika po end i przed ostatnią instrukcją przed end. Trzeba tego umieć używać.
end z kropką kończy definitywnie program, wszystko co jest za nią nie będzie brane pod uwagę. Poza tym sformatuj ten kod wg. tego artykułu: Formatowanie kodu w Delphi to zobaczysz sam co i jak. Nie czytałem całego twojego kodu bo nie mam na to siły.

0

A powiedz mi co ten pierwszy end z kropką zamyka którego begina?

0

@ szopenfx
Dzięki za link do artykułu, na pewno wiele z niego zaczerpnę.
@ _13_th_Dragon
Eh, moja nie uwaga. Zgodnie z przedmówcami ten end. kończył program. Przepraszam za zamieszanie.
Jednak niezbyt wiem, czemu tylko 3 na 10 testów przechodzi pozytywnie. Wszystkie przykłądy przechodzą ok. Obecny kod: http://ideone.com/ceT6Nc

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0