Advertisement
pseudocreator

SPA1 Polinom S/Advanced

May 12th, 2014
487
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. MODULE Polinomija;
  2. FROM InOut IMPORT WriteString, WriteLn, WriteInt, ReadInt;
  3. FROM Storage IMPORT ALLOCATE, DEALLOCATE;
  4. FROM PolinomL IMPORT Polinom, UbaciMonom, Stampaj, Anuliraj;
  5.  
  6. (*izbaci prvih k, izbaci poslednjih k elemenata*);
  7.  
  8. PROCEDURE IzbaciPrvihk(VAR p: Polinom; k: INTEGER);
  9.  
  10.         PROCEDURE BrEle(z: Polinom; VAR ima: BOOLEAN): INTEGER;
  11.         VAR
  12.            temp : Polinom;
  13.            int: INTEGER;
  14.         BEGIN
  15.              temp := z;
  16.              int := 0;
  17.              ima := FALSE;
  18.              WHILE temp <> NIL DO
  19.                  int := int + 1;
  20.                  temp := temp^.veza;
  21.                  ima := TRUE
  22.              END;
  23.              RETURN int;
  24.         END BrEle;
  25.  
  26. VAR
  27.    tek : Polinom;
  28.    pro, i : INTEGER;
  29.    ima : BOOLEAN;
  30. BEGIN
  31.      pro := BrEle(p,ima);
  32.      IF  NOT ima THEN
  33.        WriteString('Nema monoma u polinomu!');
  34.        WriteLn;
  35.        WriteString('Polinom je i dalje isti:   ');
  36.        Stampaj(p,0);
  37.        WriteLn; WriteLn;
  38.      ELSE
  39.          IF p = NIL THEN
  40.            WriteString('Polinom p je prazan ');
  41.            WriteLn;
  42.          ELSIF k = 0 THEN
  43.               WriteString('Ne izbacuje se ni jedan element, k = 0');
  44.               WriteLn;
  45.          ELSIF k > pro THEN
  46.               WriteString('Ima vise elemenata za izbaciti nego monoma, k > brojmonoma ');
  47.               WriteLn;
  48.          ELSIF k = pro THEN
  49.               p := NIL;
  50.               WriteString('Polinom posle izbacivanja svih:  ');
  51.               Stampaj(p,0);
  52.               WriteLn; WriteLn;
  53.          ELSE
  54.             FOR i := 1 TO k DO
  55.                tek := p;
  56.                p := p^.veza;
  57.                DISPOSE(tek)
  58.             END;
  59.             WriteString('Polinom posle izbacivanja ');
  60.             WriteInt(k,0);
  61.             WriteString(' elemenata, izgleda ovako:  ');
  62.             Stampaj(p,0);
  63.             WriteLn; WriteLn;
  64.          END
  65.       END
  66. END IzbaciPrvihk;
  67.  
  68. PROCEDURE IzbaciPoslednjihk(VAR p: Polinom; k: INTEGER);
  69.  
  70.         PROCEDURE BrEle(z: Polinom; VAR ima: BOOLEAN): INTEGER;
  71.         VAR
  72.            temp : Polinom;
  73.            int: INTEGER;
  74.         BEGIN
  75.              temp := z;
  76.              int := 0;
  77.              ima := FALSE;
  78.              WHILE temp <> NIL DO
  79.                  int := int + 1;
  80.                  temp := temp^.veza;
  81.                  ima := TRUE
  82.              END;
  83.              RETURN int;
  84.         END BrEle;
  85.  
  86. VAR
  87.    tek, prethodni : Polinom;
  88.    pro, i : INTEGER;
  89.    ima : BOOLEAN;
  90. BEGIN
  91.      pro := BrEle(p,ima);
  92.      IF  NOT ima THEN
  93.        WriteString('Nema monoma u polinomu!');
  94.        WriteLn;
  95.        WriteString('Polinom je i dalje isti:   ');
  96.        Stampaj(p,0);
  97.        WriteLn; WriteLn;
  98.      ELSE
  99.          IF p = NIL THEN
  100.            WriteString('Polinom p je prazan ');
  101.            WriteLn;
  102.          ELSIF k = 0 THEN
  103.               WriteString('Ne izbacuje se ni jedan element, k = 0');
  104.               WriteLn;
  105.          ELSIF k > pro THEN
  106.               WriteString('Ima vise elemenata za izbaciti nego monoma, k > brojmonoma ');
  107.               WriteLn;
  108.          ELSIF k = pro THEN
  109.               p := NIL;
  110.               WriteString('Polinom posle izbacivanja svih:  ');
  111.               Stampaj(p,0);
  112.               WriteLn; WriteLn;
  113.          ELSE
  114.             FOR i := 1 TO k DO
  115.                tek := p;
  116.                prethodni := NIL;
  117.                WHILE tek^.veza <> NIL DO
  118.                     prethodni := tek;
  119.                     tek := tek^.veza
  120.                END;
  121.                prethodni^.veza := NIL;
  122.                DISPOSE(tek)
  123.             END;
  124.             WriteString('Polinom posle izbacivanja ');
  125.             WriteInt(k,0);
  126.             WriteString(' elemenata, izgleda ovako:  ');
  127.             Stampaj(p,0);
  128.             WriteLn; WriteLn;
  129.          END
  130.       END
  131. END IzbaciPoslednjihk;
  132.  
  133. VAR
  134.    monom, polinom: Polinom;
  135.    k: INTEGER;
  136.  
  137. BEGIN
  138.      Anuliraj(polinom);
  139.  
  140.      NEW(monom);
  141.      monom^.st := 3;
  142.      monom^.k := 2.0;
  143.      monom^.veza := NIL;
  144.      UbaciMonom(monom, polinom);
  145.      DISPOSE(monom);
  146.  
  147.      NEW(monom);
  148.      monom^.st := 2;
  149.      monom^.k := 5.0;
  150.      monom^.veza := NIL;
  151.      UbaciMonom(monom, polinom);
  152.      DISPOSE(monom);
  153.  
  154.      NEW(monom);
  155.      monom^.st := 1;
  156.      monom^.k := 3.0;
  157.      monom^.veza := NIL;
  158.      UbaciMonom(monom, polinom);
  159.      DISPOSE(monom);
  160.  
  161.      NEW(monom);
  162.      monom^.st := 0;
  163.      monom^.k := 5.0;
  164.      monom^.veza := NIL;
  165.      UbaciMonom(monom, polinom);
  166.      DISPOSE(monom);
  167.  
  168.      WriteString('Polinom pre procedure:  ');
  169.      Stampaj(polinom,0);
  170.      WriteLn; WriteLn;
  171.  
  172.    (*Izrealizovati unos i poziv procedure npr.
  173.  
  174.      WriteString('Unesite k: ');
  175.      ReadInt(k); WriteLn;
  176.      IzbaciPrvihk(polinom,k);
  177.                     *)
  178. END Polinomija.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement