gitweb on Svarog

projekti pod git sistemom za održavanje verzija -- projects under the git version control system
sve iz starih verzija
[spa2-teorijske-vezbe.git] / Cas07 / MAXZBIR.MOD
diff --git a/Cas07/MAXZBIR.MOD b/Cas07/MAXZBIR.MOD
new file mode 100644 (file)
index 0000000..85e8209
--- /dev/null
@@ -0,0 +1,100 @@
+MODULE MaxZbir;\r
+\r
+  FROM IO IMPORT\r
+    WrStr, WrLn, WrCard, WrInt, RdCard, RdInt;\r
+\r
+  CONST\r
+    Max = 100;\r
+\r
+  VAR\r
+    A, B: ARRAY [1 .. Max], [1 .. Max] OF INTEGER;\r
+    m, n: CARDINAL;\r
+    (* B[vr, ko] je vrednost optimalnog resenja od (1, 1) do (vr, ko) *)\r
+\r
+  PROCEDURE Unos;\r
+    VAR\r
+      i, j: CARDINAL;\r
+  BEGIN\r
+    WrStr('Unesite n: ');\r
+    n:= RdCard();\r
+    WrStr('Unesite m: ');\r
+    m:= RdCard();\r
+    IF (n < Max) AND (m < Max) THEN\r
+      FOR i:= 1 TO m DO\r
+        FOR j:= 1 TO n DO\r
+          WrStr('A[');\r
+          WrCard(i, 1);\r
+          WrStr(', ');\r
+          WrCard(j, 1);\r
+          WrStr('] = ');\r
+          A[i, j] := RdInt();\r
+        END;\r
+      END;\r
+    END;\r
+  END Unos;\r
+\r
+  PROCEDURE Resi;\r
+    VAR\r
+      i, j: CARDINAL;\r
+  BEGIN\r
+    B[1, 1]:= A[1, 1];\r
+    FOR j:= 2 TO n DO\r
+      B[1, j]:= A[1, j] + B[1, j-1];\r
+    END;\r
+    FOR i:= 2 TO m DO\r
+      B[i, 1]:= A[i, 1] + B[i-1, 1];\r
+    END;\r
+    FOR i:= 2 TO m DO\r
+      FOR j:= 2 TO n DO\r
+        IF B[i, j - 1] < B[i - 1, j] THEN\r
+          B[i, j]:= A[i, j] + B[i - 1, j];\r
+        ELSE\r
+          B[i, j]:= A[i, j] + B[i, j - 1];\r
+        END;\r
+      END;\r
+    END;\r
+  END Resi;\r
+\r
+  PROCEDURE Ispis(Vr, Ko: CARDINAL);\r
+    VAR\r
+      i: CARDINAL;\r
+  BEGIN\r
+    IF (Vr > 1) AND (Ko > 1) THEN\r
+      IF B[Vr - 1, Ko] > B[Vr, Ko - 1] THEN\r
+        Ispis(Vr - 1, Ko);\r
+      ELSE\r
+        Ispis(Vr, Ko - 1);\r
+      END;\r
+      WrStr('(');\r
+      WrCard(Vr, 1);\r
+      WrStr(', ');\r
+      WrCard(Ko, 1);\r
+      WrStr(')');\r
+    ELSIF Vr = 1 THEN\r
+      FOR i:= 1 TO Ko DO\r
+        WrStr('(1, ');\r
+        WrCard(i, 1);\r
+        WrStr(')');\r
+      END;\r
+    ELSE\r
+      FOR i:= 1 TO Vr DO\r
+        WrStr('(');\r
+        WrCard(i, 1);\r
+        WrStr(', 1)');\r
+      END;\r
+    END;\r
+  END Ispis;\r
+\r
+BEGIN\r
+  Unos;\r
+  IF (n < Max) AND (m < Max) THEN\r
+    Resi;\r
+    WrStr('Maksimalni zbir je ');\r
+    WrInt(B[m, n], 1);\r
+    WrStr(' a postize se ovako:');\r
+    WrLn;\r
+    Ispis(m, n)\r
+  ELSE\r
+    WrStr('Suvise velika matrica.')\r
+  END\r
+END MaxZbir.\r
Svarog.pmf.uns.ac.rs/gitweb maintanance Doni Pracner