Advertisement
pseudocreator

SPA1 lista (osnovne procedure) //srb

Mar 21st, 2014
436
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. MODULE lista_z1;
  2. // 21.3.2014(3 cas) PMF
  3. FROM InOut IMPORT ReadInt, WriteInt, WriteLn, WriteString;
  4. FROM Storage IMPORT ALLOCATE, DEALLOCATE;
  5.  
  6. TYPE
  7.     pok = POINTER TO Slog;
  8.     Slog = RECORD
  9.               kinf : INTEGER;
  10.               veza : pok
  11.            END;
  12. VAR
  13.    lista : pok;
  14.    n, i, broj, bp, b : INTEGER;
  15.    prazna, parni : BOOLEAN;
  16.  
  17.  
  18.  
  19. PROCEDURE ucitajulistu(VAR lista: pok; broj: INTEGER);
  20. VAR
  21.    temp : pok;
  22. BEGIN
  23.      NEW(temp);
  24.      temp^.kinf := broj;
  25.      temp^.veza := lista;
  26.      lista := temp
  27. END ucitajulistu;
  28.  
  29. PROCEDURE stampajlistu(lista: pok);
  30. VAR
  31.    temp : pok;
  32. BEGIN
  33.      temp := lista;
  34.      WHILE temp <> NIL DO
  35.           WriteInt(temp^.kinf,0);
  36.           WriteLn;
  37.           temp := temp^.veza
  38.     END;
  39. END stampajlistu;
  40.  
  41. PROCEDURE egzb(lista: pok; b: INTEGER; VAR prazna: BOOLEAN): INTEGER;
  42. VAR
  43.    ct: INTEGER;
  44.    temp : pok;
  45. BEGIN
  46.      prazna := FALSE;
  47.      IF lista = NIL THEN
  48.        prazna := TRUE
  49.      END;
  50.      temp := lista;
  51.      ct := 0;
  52.      WHILE temp <> NIL DO
  53.           IF temp^.kinf = b THEN
  54.             ct := ct +1
  55.           END;
  56.           temp := temp^.veza
  57.      END;
  58.      RETURN ct;
  59. END egzb;
  60.  
  61. PROCEDURE egzp(lista: pok): BOOLEAN;
  62. VAR
  63.    temp : pok;
  64. BEGIN
  65.      temp := lista;
  66.      WHILE temp <> NIL DO
  67.           IF NOT ODD(temp^.kinf) THEN
  68.             RETURN TRUE
  69.           END
  70.      END;
  71.      RETURN FALSE;
  72. END egzp;
  73.  
  74. PROCEDURE parnie(lista: pok);
  75. VAR
  76.    temp : pok;
  77. BEGIN
  78.      temp := lista;
  79.      WHILE temp <> NIL DO
  80.           IF NOT ODD(temp^.kinf) THEN
  81.             WriteInt(temp^.kinf,0);
  82.             WriteLn
  83.           END;
  84.           temp := temp^.veza;
  85.      END
  86. END parnie;
  87.  
  88. PROCEDURE poslednji(lista: pok);
  89. VAR
  90.    temp : pok;
  91. BEGIN
  92.      temp := lista;
  93.      IF lista <> NIL THEN
  94.         WHILE temp^.veza <> NIL DO
  95.              temp := temp^.veza
  96.         END;
  97.         WriteInt(temp^.kinf,0)
  98.      END;
  99. END poslednji;
  100.  
  101. PROCEDURE unisti(VAR lista: pok);
  102. VAR
  103.    temp : pok;
  104. BEGIN
  105.      temp := lista;
  106.      WHILE temp <> NIL DO
  107.           lista := lista^.veza;
  108.           DISPOSE(temp);
  109.           temp := lista
  110.      END
  111. END unisti;
  112.  
  113.  
  114.  
  115. BEGIN
  116.      (*Unos*)
  117.      lista := NIL;
  118.      WriteString('Unesite n elmenata za listu: ');
  119.      ReadInt(n); WriteLn;
  120.      WriteString('Unos elemenata: '); WriteLn;
  121.      FOR i := 1 TO n DO
  122.         ReadInt(broj);
  123.         ucitajulistu(lista,broj)
  124.      END;
  125.      (*Stampa*)
  126.      WriteLn; WriteLn;
  127.      WriteString('Ispis elemenata iz liste: '); WriteLn;
  128.      stampajlistu(lista);
  129.      (*svijednakisa b*)
  130.      WriteLn; WriteLn;
  131.      WriteString('Unesite b: ');
  132.      ReadInt(b);
  133.      WriteLn;
  134.      bp := egzb(lista,b,prazna);
  135.      IF prazna THEN
  136.        WriteString('U listi nema elemenata!');
  137.        WriteLn
  138.      ELSE
  139.          IF bp = 0 THEN
  140.            WriteString('Uneseni broj nije pronadjen u listi!');
  141.            WriteLn
  142.          ELSE
  143.               WriteInt(b,0);
  144.               WriteString('  je pronadjeno u listi  ');
  145.               WriteInt(bp,0);
  146.               WriteString('. puta.'); WriteLn
  147.          END
  148.      END;
  149.      (*stamapj parne*)
  150.      WriteLn; WriteLn;
  151.      parni := egzp(lista);
  152.      IF parni THEN
  153.         WriteString('Parni elementi su: ');
  154.         parnie(lista); WriteLn
  155.      ELSE
  156.          WriteString('Nema parnih elemenata.');
  157.          WriteLn
  158.      END;
  159.      (*Stampaj poslednji*)
  160.      WriteLn;
  161.      IF prazna THEN
  162.        WriteString('U listi nema elemenata!')
  163.      ELSE
  164.        WriteString('Poslednji element u listi je:  ');
  165.        poslednji(lista)
  166.      END;
  167.      (*Unisti listu*)
  168.      unisti(lista);
  169.      WriteLn;
  170.      WriteString('Kraj programa.')
  171. END lista_z1.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement