Nakon učitavanja riječi s tipkovnice, generiraju se sve njene podriječi, spremaju jedna po jedna u polje podriječi, naravno nakon provjere da li takva podriječ već ne postoji od ranije. Na kraju se ispisuje broj tih podriječi. Dimenziju polja podriječi smo definirali kao maksimalni broj podriječi za riječ maksimalne duljine 20 (kad bi sve podriječi bile međusobno različite). Taj broj je za konkretnu riječ duljine n jednak n*(n+1)/2. RIJEC.PAS --------- program _rijec; var i,j,k : integer; duljina_rijeci,broj_podrijeci : integer; nema_takve : boolean; rijec : string[20]; podrijeci : array [1..210] of string[20]; begin writeln; write('Upisite rijec : '); readln(rijec); duljina_rijeci := length(rijec); broj_podrijeci := 0; for i := 1 to duljina_rijeci do for j := 1 to duljina_rijeci - i + 1 do begin podrijeci[broj_podrijeci + 1] := copy(rijec,j,i); nema_takve := true; for k := 1 to broj_podrijeci do if podrijeci[broj_podrijeci + 1] = podrijeci[k] then begin nema_takve := false; break; end; if nema_takve then inc(broj_podrijeci); end; writeln; writeln('Broj razlicitih podrijeci : ',broj_podrijeci); end. RIJEC.C ------- #include #include #define MAX_DULJINA 20 int main(void) { int i,j,k; int duljina_rijeci,nema_takve; int broj_podrijeci = 0; char rijec[MAX_DULJINA + 1]; char podrijeci[MAX_DULJINA * (MAX_DULJINA + 1) / 2][MAX_DULJINA + 1]; printf("\nUpisite rijec : "); scanf("%s",&rijec); duljina_rijeci = strlen(rijec); for (i = 1;i <= duljina_rijeci;++i) for (j = 0;j <= duljina_rijeci - i;++j) { strcpy(podrijeci[broj_podrijeci],rijec + j); podrijeci[broj_podrijeci][i] = '\0'; nema_takve = 1; for (k = 0;k < broj_podrijeci;++k) if (!strcmp(podrijeci[broj_podrijeci],podrijeci[k])) { nema_takve = 0; break; } if (nema_takve) ++broj_podrijeci; } printf("\nBroj razlicitih podrijeci : %d\n",broj_podrijeci); return 0; }