gitweb on Svarog
projekti pod git sistemom za održavanje verzija -- projects under the git version control system
summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 5750796)
raw | patch | inline | side by side (parent: 5750796)
author | Doni Pracner <quinnuendo@gmail.com> | |
Wed, 6 Nov 2013 12:06:29 +0000 (13:06 +0100) | ||
committer | Doni Pracner <quinnuendo@gmail.com> | |
Wed, 6 Nov 2013 12:06:29 +0000 (13:06 +0100) |
04. N brojeva/NBROJEVA.MOD | [deleted file] | patch | blob | history |
04. N brojeva/kod/NBROJEVA.MOD | [new file with mode: 0644] | patch | blob |
diff --git a/04. N brojeva/NBROJEVA.MOD b/04. N brojeva/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
diff --git a/04. N brojeva/kod/NBROJEVA.MOD b/04. N brojeva/kod/NBROJEVA.MOD
--- /dev/null
@@ -0,0 +1,112 @@
+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