gitweb on Svarog
projekti pod git sistemom za održavanje verzija -- projects under the git version control systemdiff --git a/09. Permutacije/TopSpeed/PERMP.MOD b/09. Permutacije/TopSpeed/PERMP.MOD
--- /dev/null
@@ -0,0 +1,92 @@
+MODULE PermP;\r
+\r
+FROM IO IMPORT\r
+ WrStr, WrLn, WrCard, RdCard, WrChar, RdKey, OK;\r
+\r
+CONST\r
+ MaxDim = 50;\r
+\r
+TYPE\r
+ Niz = ARRAY [1 .. MaxDim] OF CHAR;\r
+\r
+VAR\r
+ A: Niz;\r
+ n: CARDINAL;\r
+\r
+PROCEDURE Unos(VAR n: CARDINAL; VAR A: Niz);\r
+VAR\r
+ i: CARDINAL;\r
+BEGIN\r
+ REPEAT\r
+ WrStr('Unesite n (1 <= n <= ');\r
+ WrCard(MaxDim, 1);\r
+ WrStr(') --- ');\r
+ n:= RdCard();\r
+ WrLn;\r
+ UNTIL OK AND (1 <= n) AND (n <= MaxDim);\r
+ REPEAT\r
+ WrLn;\r
+ WrStr('Unesite ');\r
+ WrCard(n, 1);\r
+ WrStr(' slova koja treba permutovati (mogu se i ponavljati):');\r
+ WrLn;\r
+ WrLn;\r
+ i:= 0;\r
+ REPEAT\r
+ INC(i);\r
+ A[i]:= RdKey();\r
+ WrChar(A[i])\r
+ UNTIL (i = n) OR ((CAP(A[i]) < 'A') AND (CAP(A[i]) > 'Z')\r
+ AND (A[i] < '0') AND (A[i] > '9'));\r
+ UNTIL NOT ((CAP(A[i]) < 'A') AND (CAP(A[i]) > 'Z') AND\r
+ (A[i] < '0') AND (A[i] > '9'));\r
+END Unos;\r
+\r
+PROCEDURE Permutacije(n: CARDINAL; VAR A: Niz);\r
+\r
+ PROCEDURE Nadji(k: CARDINAL);\r
+ VAR\r
+ i, j: CARDINAL;\r
+ Temp: CHAR;\r
+ BEGIN\r
+ IF k = 1 THEN\r
+ FOR i:= 1 TO n DO\r
+ WrChar(A[i]);\r
+ END;\r
+ WrLn;\r
+ ELSE\r
+ Nadji(k - 1);\r
+ FOR i:= 1 TO k - 1 DO\r
+ IF A[k] # A[i] THEN\r
+ (* Zamenimo elemente samo ako su razliciti *)\r
+ j:= 1;\r
+ WHILE (j < i) AND (A[j] # A[i]) DO\r
+ INC(j);\r
+ END;\r
+ IF j = i THEN\r
+ (* A[i] nema duplikata u skupu {a[1], ... , a[i-1] *)\r
+ Temp:= A[i];\r
+ A[i]:= A[k];\r
+ A[k]:= Temp;\r
+ Nadji(k - 1);\r
+ Temp:= A[i];\r
+ A[i]:= A[k];\r
+ A[k]:= Temp;\r
+ END;\r
+ END;\r
+ END;\r
+ END;\r
+ END Nadji;\r
+\r
+BEGIN\r
+ Nadji(n);\r
+END Permutacije;\r
+\r
+BEGIN \r
+ Unos(n, A);\r
+ WrLn;\r
+ WrLn;\r
+ WrStr('Permutacije: ');\r
+ WrLn;\r
+ Permutacije(n, A);\r
+END PermP.\r