gitweb on Svarog

projekti pod git sistemom za održavanje verzija -- projects under the git version control system
skripta verzija 14c
[spa1skripta-public.git] / kodovi / polinomi / POLINOML.MOD
index fb6db76..12fc5b1 100644 (file)
@@ -1,5 +1,5 @@
 (* Modul za rad sa polinomima preko listi\r
-   verzija 2014 *)\r
+   verzija 2014; rev 1 *)\r
 IMPLEMENTATION MODULE PolinomL;\r
 FROM InOut IMPORT Write, WriteString, WriteLn,\r
            WriteCard, ReadCard, Done;\r
@@ -93,10 +93,9 @@ BEGIN
       cilj^.k := k;\r
       cilj^.st := st;\r
       cilj^.veza := NIL;\r
-      IF p = NIL THEN\r
-       p := cilj;\r
-      ELSIF prethodni = NIL THEN\r
-       cilj^.veza := p^.veza;\r
+      IF prethodni = NIL THEN\r
+       (* ili je prazan polinom, ili dodajemo na pocetak *)\r
+       cilj^.veza := p;\r
        p := cilj;\r
       ELSE\r
        cilj^.veza := prethodni^.veza;\r
@@ -273,7 +272,7 @@ END MonomPuta;
 \r
 PROCEDURE Puta(p1, p2: Polinom; VAR pr: Polinom);\r
 VAR\r
-  pomocni: Polinom;\r
+  pomocni, brisi: Polinom;\r
 BEGIN\r
   Anuliraj(pr);\r
   IF (p1 <> NIL) AND (p2 <> NIL) THEN\r
@@ -283,7 +282,9 @@ BEGIN
       MonomPuta(p1, p2, pomocni);\r
       REPEAT\r
         UbaciMonom(pomocni, pr);\r
-        pomocni := pomocni^.veza\r
+        brisi := pomocni;\r
+        pomocni := pomocni^.veza;\r
+        DISPOSE(brisi);\r
       UNTIL pomocni = NIL;\r
       p2 := p2^.veza\r
     END\r
@@ -302,7 +303,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
@@ -326,18 +328,19 @@ PROCEDURE PolinomNaN(p: Polinom; n: CARDINAL;
                      VAR rez: Polinom);\r
 VAR\r
   i: CARDINAL;\r
+  pret : Polinom;\r
 BEGIN\r
   IF n = 0 THEN\r
     NEW(rez);\r
     rez^.k := 1.0;\r
     rez^.st := 0;\r
     rez^.veza := NIL;\r
-  ELSIF n = 1 THEN\r
-       Kopiraj( p, rez );\r
   ELSE\r
-    rez := p;\r
+    Kopiraj( p, rez );\r
     FOR i := 2 TO n DO\r
-      Puta(rez, p, rez)\r
+      pret := rez;\r
+      Puta(pret, p, rez);\r
+      DisposePolinom(pret);\r
     END\r
   END;\r
 END PolinomNaN;\r
Svarog.pmf.uns.ac.rs/gitweb maintanance Doni Pracner