gitweb on Svarog
projekti pod git sistemom za održavanje verzija -- projects under the git version control systemdiff --git a/Cas05/NBROJEVA.MOD b/Cas05/NBROJEVA.MOD
--- a/Cas05/NBROJEVA.MOD
+++ /dev/null
@@ -1,112 +0,0 @@
-MODULE NBrojeva;\r
-\r
- FROM IO IMPORT\r
- WrLn, WrCard, RdCard, WrStr;\r
-\r
- CONST\r
- MaxNiz = 50;\r
- MaxSuma = 500;\r
-\r
- VAR\r
- n, Suma, SumaPola: CARDINAL;\r
- Broj: ARRAY [1 .. MaxNiz] OF CARDINAL;\r
- Iskor: ARRAY[1 .. MaxNiz] OF BOOLEAN;\r
- Mat: ARRAY[0 .. MaxSuma], [0 .. MaxNiz] OF CARDINAL;\r
- (* Mat[i, j] je suma brojeva u resenju ako je maksimalna *)\r
- (* dozvoljena suma brojeva u resenju jednaka 'i' i ako se *)\r
- (* koristi samo prvih 'j' brojeva. *)\r
-\r
- PROCEDURE Unos;\r
- VAR\r
- i: CARDINAL;\r
- BEGIN\r
- WrStr('Unesite n: ');\r
- n:= RdCard();\r
- Suma:= 0;\r
- FOR i:= 1 TO n DO\r
- WrStr('Unesite ');\r
- WrCard(i, 1);\r
- WrStr('. broj: ');\r
- Broj[i]:= RdCard();\r
- Suma:= Suma + Broj[i];\r
- Iskor[i]:= FALSE;\r
- END;\r
- SumaPola:= Suma DIV 2;\r
- END Unos;\r
-\r
- PROCEDURE Resi;\r
- VAR\r
- i, j, Pom: CARDINAL;\r
- BEGIN\r
- FOR i:= 0 TO SumaPola DO\r
- Mat[i, 0]:= 0; (* Koristi se prvih 0 brojeva *)\r
- END;\r
- FOR j:= 1 TO n DO\r
- Mat[0, j]:= 0; (* Maksimalna dozvoljena suma brojeva u resenju je 0 *)\r
- END;\r
- FOR i:= 1 TO SumaPola DO\r
- (* Maks. dozvoljena suma brojeva u resenju je i *)\r
- FOR j := 1 TO n DO\r
- (* U resenju mogu ucestvovati prvih j brojeva *)\r
- Mat[i, j]:= Mat[i, j - 1];\r
- IF Broj[j] <= i THEN\r
- Pom:= Mat[i - Broj[j], j - 1] + Broj[j];\r
- IF Pom > Mat[i, j] THEN\r
- Mat[i, j]:= Pom;\r
- END;\r
- END;\r
- END;\r
- END;\r
- END Resi;\r
-\r
- PROCEDURE IspisiPrvu;\r
- VAR\r
- i, j: CARDINAL;\r
- BEGIN\r
- WrStr('Zbir prve grupe brojeva je ');\r
- WrCard(Mat[SumaPola, n], 1);\r
- WrLn;\r
- WrStr('Prvu grupu brojeva cine brojevi:');\r
- WrLn;\r
- i:= SumaPola;\r
- j:= n;\r
- REPEAT\r
- WHILE (j > 0) AND (Mat[i, j] = Mat[i, j - 1]) DO\r
- DEC(j);\r
- END;\r
- IF j > 0 THEN\r
- WrCard(Broj[j], 8);\r
- Iskor[j]:= TRUE;\r
- i:= i - Broj[j];\r
- DEC(j);\r
- END;\r
- UNTIL j = 0;\r
- END IspisiPrvu;\r
-\r
- PROCEDURE IspisiDrugu;\r
- VAR\r
- i, j: CARDINAL;\r
- BEGIN\r
- WrLn;\r
- WrStr('Zbir druge grupe brojeva je ');\r
- WrCard(Suma - Mat[SumaPola, n], 1);\r
- WrLn;\r
- WrStr('Drugu grupu brojeva cine brojevi:');\r
- WrLn;\r
- FOR i := 1 TO n DO\r
- IF NOT Iskor[i] THEN\r
- WrCard(Broj[i], 8);\r
- END;\r
- END;\r
- END IspisiDrugu;\r
-\r
-BEGIN\r
- Unos;\r
- IF SumaPola > MaxSuma THEN\r
- WrStr('Ulazni podaci su suvise veliki.');\r
- ELSE\r
- Resi;\r
- IspisiPrvu;\r
- IspisiDrugu;\r
- END;\r
-END NBrojeva.\r