Advertisement
pseudocreator

SPA1 Polinom Regular (kolokvijum)

May 12th, 2014
521
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. MODULE Polinomib;
  2. FROM InOut IMPORT WriteString, WriteLn, WriteInt;
  3. FROM Storage IMPORT ALLOCATE, DEALLOCATE;
  4. FROM PolinomL IMPORT Polinom, UbaciMonom, Stampaj, Anuliraj;
  5.  
  6. (*Procedure za kolokvijum iz Polinoma/SPA1*)
  7.  
  8.  
  9. (*izbacuje monome sa (k > 2.0) zameniti analogno uslov *)
  10. PROCEDURE izbaciuk(VAR p: Polinom);
  11. VAR
  12.    tekuci, prethodni : Polinom;
  13. BEGIN
  14.      WHILE (p <> NIL) AND (p^.k > 2.0) DO
  15.           tekuci := p;
  16.           p := p^.veza;
  17.           DISPOSE(tekuci)
  18.      END;
  19.      tekuci := p;
  20.      prethodni := NIL;
  21.      WHILE tekuci <> NIL DO
  22.           IF tekuci^.k > 2.0 THEN
  23.             prethodni^.veza := tekuci^.veza;
  24.             DISPOSE(tekuci);
  25.             tekuci := prethodni^.veza
  26.           ELSE
  27.               prethodni := tekuci;
  28.               tekuci := tekuci^.veza
  29.           END
  30.      END;
  31.      WriteString('Polinom:   ');
  32.      Stampaj(p,0);
  33.      WriteLn; WriteLn
  34. END izbaciuk;
  35.  
  36. (*izbacuje monome sa parnim stepenima*)
  37. PROCEDURE izbaciusp(VAR p: Polinom);
  38. VAR
  39.    tekuci, prethodni : Polinom;
  40. BEGIN
  41.      WHILE (p <> NIL) AND (p^.st MOD 2 = 0) DO
  42.           tekuci  := p;
  43.           p := p^.veza;
  44.           DISPOSE(tekuci)
  45.      END;
  46.      tekuci := p;
  47.      prethodni := NIL;
  48.      WHILE tekuci <> NIL DO
  49.           IF (tekuci^.st MOD 2 = 0) THEN
  50.             prethodni^.veza := tekuci^.veza;
  51.             DISPOSE(tekuci);
  52.             tekuci := prethodni^.veza
  53.           ELSE
  54.               prethodni := tekuci;
  55.               tekuci := tekuci^.veza
  56.           END
  57.      END;
  58.      WriteString('Polinom beza parnih stepeni:    ');
  59.      Stampaj(p,0);
  60.      WriteLn; WriteLn;
  61. END izbaciusp;
  62.  
  63. (*izbacuje monome sa neparnim stepenima*)
  64. PROCEDURE izbaciusn(VAR p: Polinom);
  65. VAR
  66.    tekuci, prethodni : Polinom;
  67. BEGIN
  68.      WHILE (p <> NIL) AND (p^.st MOD 2 = 1) DO
  69.           tekuci  := p;
  70.           p := p^.veza;
  71.           DISPOSE(tekuci)
  72.      END;
  73.      tekuci := p;
  74.      prethodni := NIL;
  75.      WHILE tekuci <> NIL DO
  76.           IF (tekuci^.st MOD 2 = 1) THEN
  77.             prethodni^.veza := tekuci^.veza;
  78.             DISPOSE(tekuci);
  79.             tekuci := prethodni^.veza
  80.           ELSE
  81.               prethodni := tekuci;
  82.               tekuci := tekuci^.veza
  83.           END
  84.      END;
  85.      WriteString('Polinom bez neparnih stepeni:    ');
  86.      Stampaj(p,0);
  87.      WriteLn; WriteLn;
  88. END izbaciusn;
  89.  
  90. (*rasclani na parne i neparne polinome*)
  91. PROCEDURE napinep(p: Polinom;VAR pq, pw: Polinom);
  92. VAR
  93.    temp, monom : Polinom;
  94.    pwo, pqo : BOOLEAN;
  95. BEGIN
  96.      NEW(monom);
  97.      Anuliraj(pq);
  98.      Anuliraj(pw);
  99.      temp := p;
  100.      pwo := FALSE;
  101.      pqo := FALSE;
  102.      WHILE temp <> NIL DO
  103.           IF temp^.st MOD 2 = 1 THEN
  104.             monom^.st := temp^.st;
  105.             monom^.k := temp^.k;
  106.             monom^.veza := NIL;
  107.             UbaciMonom(monom,pq);
  108.             pqo := TRUE
  109.           ELSE
  110.               monom^.st := temp^.st;
  111.               monom^.k := temp^.k;
  112.               monom^.veza := NIL;
  113.               UbaciMonom(monom,pw);
  114.               pwo := TRUE
  115.           END;
  116.           temp := temp^.veza
  117.     END;
  118.     DISPOSE(monom);
  119.     IF pqo THEN
  120.       WriteString('Polinom sa neparnim izgleda ovako:   ');
  121.       Stampaj(pq,0); WriteLn; WriteLn
  122.     ELSE
  123.         WriteString('Ne postoji polinom sa neparnim monomima! ');
  124.         WriteLn; WriteLn
  125.     END;
  126.     IF pwo THEN
  127.       WriteString('Polinom sa parnim izgleda ovako:   ');
  128.       Stampaj(pw,0); WriteLn; WriteLn
  129.     ELSE
  130.         WriteString('Ne postoji polinom sa parnim monomima! ');
  131.         WriteLn; WriteLn
  132.     END
  133. END napinep;
  134.  
  135. (*Provera ispravnosti polinoma<?>, redosledom od 0 stepeni*)
  136. PROCEDURE pri(p: Polinom): BOOLEAN;
  137. VAR
  138.    isp : BOOLEAN;
  139.    temp : Polinom;
  140. BEGIN
  141.      temp := p;
  142.      isp := TRUE;
  143.      WHILE (temp^.veza <> NIL) AND (isp) DO
  144.           IF (temp^.st < temp^.veza^.st) THEN
  145.             isp := FALSE
  146.           END;
  147.           temp := temp^.veza
  148.      END;
  149.      IF isp THEN
  150.        WriteString('Polinom je ok')
  151.      ELSE
  152.          WriteString('Polinom je pogresno postavljen!');
  153.          WriteLn
  154.      END;
  155.      RETURN isp;
  156. END pri;
  157.  
  158. (*Broj Elemenata U Polinomu*)
  159. PROCEDURE BrEle(z: Polinom; VAR ima: BOOLEAN): INTEGER;
  160. VAR
  161.    temp : Polinom;
  162.    int: INTEGER;
  163.    BEGIN
  164.         temp := z;
  165.         int := 0;
  166.         ima := FALSE;
  167.         WHILE temp <> NIL DO
  168.              int := int + 1;
  169.              temp := temp^.veza;
  170.              ima := TRUE
  171.         END;
  172.         IF ima THEN
  173.           WriteString('U polinomu ima: ');
  174.           WriteInt(int,0);
  175.           WriteString(' monoma.');
  176.           WriteLn; WriteLn
  177.         ELSE
  178.             WriteString('U polinomu nema monoma. ');
  179.             WriteLn; WriteLn
  180.         END;
  181.         RETURN int
  182. END BrEle;
  183.  
  184. VAR
  185.    monom, polinom, q, w, e: Polinom;
  186.    o : BOOLEAN;
  187.    int : INTEGER;
  188.  
  189. BEGIN
  190.      Anuliraj(polinom);
  191.  
  192.      NEW(monom);
  193.      monom^.st := 3;
  194.      monom^.k := 2.0;
  195.      monom^.veza := NIL;
  196.      UbaciMonom(monom, polinom);
  197.      DISPOSE(monom);
  198.  
  199.      NEW(monom);
  200.      monom^.st := 2;
  201.      monom^.k := 5.0;
  202.      monom^.veza := NIL;
  203.      UbaciMonom(monom, polinom);
  204.      DISPOSE(monom);
  205.  
  206.      NEW(monom);
  207.      monom^.st := 1;
  208.      monom^.k := 3.0;
  209.      monom^.veza := NIL;
  210.      UbaciMonom(monom, polinom);
  211.      DISPOSE(monom);
  212.  
  213.      NEW(monom);
  214.      monom^.st := 0;
  215.      monom^.k := 5.0;
  216.      monom^.veza := NIL;
  217.      UbaciMonom(monom, polinom);
  218.      DISPOSE(monom);
  219.  
  220.      WriteString('Polinom pre procedure:  ');
  221.      Stampaj(polinom,0);
  222.      WriteLn; WriteLn;
  223.  
  224.      (*Ovde ubaciti proceduru*)
  225.      (*npr
  226.  
  227.         int := BrEle(polinom,o);  *)
  228.  
  229.  
  230.  
  231. END Polinomib.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement