gitweb on Svarog

projekti pod git sistemom za održavanje verzija -- projects under the git version control system
polinoml - deli, doterivanje potrosnje memorije
[spa1skripta-public.git] / kodovi / polinomi / POLINOML.MOD
index 3781d25..1f53f28 100644 (file)
@@ -83,40 +83,63 @@ BEGIN
     prethodni := cilj;\r
     cilj := cilj^.veza;\r
   END;\r
-  IF (cilj = NIL) THEN\r
-    IF k#0.0 THEN\r
+  (* da li upisujemo vrednost ili sklanjamo clan *)\r
+  IF k#0.0 THEN\r
+    (* da li menjamo clan ili pravimo novi *)\r
+    IF (cilj # NIL) AND (cilj^.st = st) THEN\r
+      cilj^.k:=k;\r
+    ELSE\r
       NEW(cilj);\r
       cilj^.k := k;\r
       cilj^.st := st;\r
       cilj^.veza := NIL;\r
-      IF (p = NIL) THEN\r
+      IF p = NIL THEN\r
+       p := cilj;\r
+      ELSIF prethodni = NIL THEN\r
+       cilj^.veza := p^.veza;\r
        p := cilj;\r
       ELSE\r
+       cilj^.veza := prethodni^.veza;\r
        prethodni^.veza := cilj;\r
       END;\r
     END;\r
-  ELSIF cilj^.st=st THEN\r
-    IF k#0.0 THEN\r
-      cilj^.k:=k;\r
-    ELSE\r
-      IF (p=cilj) THEN\r
-       DISPOSE(p);\r
+  ELSE\r
+    (* da li postoji ovakav clan *)\r
+    IF (cilj # NIL) AND (cilj^.st = st) THEN\r
+      IF p = cilj THEN\r
+       p := p^.veza;\r
       ELSE\r
        prethodni^.veza:= prethodni^.veza^.veza;\r
-       DISPOSE(cilj);\r
       END;\r
-    END;\r
-  ELSE\r
-    IF k#0.0 THEN\r
-      NEW(cilj);\r
-      cilj^.k := k;\r
-      cilj^.st := st;\r
-      cilj^.veza := prethodni^.veza;\r
-      prethodni^.veza := cilj;\r
+      DISPOSE(cilj);      \r
     END;\r
   END;\r
 END PostaviClan;\r
 \r
+PROCEDURE KoeficijentUz(p:Polinom; st:CARDINAL):REAL;\r
+VAR\r
+  tekuci : Polinom;\r
+BEGIN\r
+  tekuci := p;\r
+  WHILE (tekuci#NIL) AND (tekuci^.st > st) DO\r
+    tekuci := tekuci^.veza;\r
+  END;\r
+  IF (tekuci # NIL) AND (tekuci^.st = st) THEN\r
+    RETURN tekuci^.k;\r
+  ELSE\r
+    RETURN 0.0;\r
+  END;\r
+END KoeficijentUz;\r
+\r
+PROCEDURE MaksimalniStepen(p:Polinom):CARDINAL;\r
+BEGIN\r
+  IF p#NIL THEN\r
+    RETURN p^.st;\r
+  ELSE\r
+    RETURN 0;\r
+  END;\r
+END MaksimalniStepen;\r
+\r
 PROCEDURE UbaciMonom(mon:Polinom; VAR p: Polinom);\r
 VAR\r
   stari, tekuci, kopija: Polinom;\r
@@ -279,7 +302,8 @@ PROCEDURE Kolicnik(p1, p2: Polinom; VAR kol, ost: Polinom; VAR ok: BOOLEAN);
         novi^.k := - ost^.k / p2^.k;\r
         novi^.st := ost^.st - p2^.st;\r
         MonomPuta(p2, novi, pomocni);\r
-        Saberi(ost, pomocni, ost);\r
+        SaberiNa(pomocni, ost);\r
+        DisposePolinom(pomocni);\r
         novi^.k := - novi^.k;\r
         UbaciMonom(novi, kol);\r
         DISPOSE(novi);\r
Svarog.pmf.uns.ac.rs/gitweb maintanance Doni Pracner