Advertisement
pseudocreator

SPA2 ListaFajl

Oct 18th, 2014
511
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. //ucitavanje 3 liste iz fajlova i njihovo spajanje
  2. MODULE strVez;
  3. FROM InOut IMPORT WriteString, WriteLn, ReadInt, WriteInt;
  4. FROM Storage IMPORT ALLOCATE, DEALLOCATE;
  5. FROM FIO IMPORT File, RdStr, WrStr, Open, WrLn, EOF, Close;
  6. FROM Str IMPORT Compare;
  7.  
  8. CONST
  9.      MaxString = 20;
  10.      fajl1 = "ucitajfajl1.txt";
  11.      fajl2 = "ucitajfajl2.txt";
  12.      fajl3 = "ucitajfajl3.txt";
  13.  
  14. TYPE
  15.     STRING = ARRAY[0..MaxString] OF CHAR;
  16.     LISTA = POINTER TO ELEMENT;
  17.     ELEMENT = RECORD
  18.                  kinfo : STRING;
  19.                  veza : LISTA
  20.               END;
  21.  
  22. PROCEDURE praznaLista(l: LISTA):BOOLEAN;
  23. BEGIN
  24.      RETURN l = NIL
  25. END praznaLista;
  26.  
  27. PROCEDURE dodajPocetak(VAR l: LISTA;str: STRING);
  28. VAR
  29.    novi: LISTA;
  30. BEGIN
  31.      NEW(novi);
  32.      novi^.kinfo := str;
  33.      novi^.veza := l;
  34.      l := novi
  35. END dodajPocetak;
  36.  
  37. PROCEDURE dodajKraj(VAR l: LISTA;str: STRING);
  38. VAR
  39.    novi, temp : LISTA;
  40. BEGIN
  41.      NEW(novi);
  42.      novi^.kinfo := str;
  43.      novi^.veza := NIL;
  44.      IF praznaLista(l) THEN
  45.        l := novi
  46.      ELSE
  47.          temp := l;
  48.          WHILE temp^.veza # NIL DO
  49.               temp := temp^.veza
  50.          END;
  51.          temp^.veza := novi
  52.      END
  53. END dodajKraj;
  54.  
  55. PROCEDURE unistiListu(VAR l: LISTA);
  56. VAR
  57.    temp : LISTA;
  58. BEGIN
  59.      temp := l;
  60.      WHILE temp # NIL DO
  61.           l := l^.veza;
  62.           DISPOSE(temp);
  63.           temp := l
  64.      END
  65. END unistiListu;
  66.  
  67. PROCEDURE stampanje(l: LISTA);
  68. VAR
  69.    str : STRING;
  70. BEGIN
  71.      WHILE (l # NIL) DO
  72.           str := l^.kinfo;
  73.           WriteString(str); WriteString("  ");
  74.           l := l^.veza
  75.      END;
  76.      WriteLn;
  77. END stampanje;
  78.  
  79.  
  80. PROCEDURE pretraga(l: LISTA;str: STRING): BOOLEAN;
  81. VAR
  82.    temp : LISTA;
  83.    provera : INTEGER;
  84. BEGIN
  85.      temp := l;
  86.      WHILE (temp # NIL) DO
  87.           provera := Compare(str,temp^.kinfo);
  88.           IF provera = 0 THEN
  89.             RETURN TRUE
  90.           END;
  91.           temp := temp^.veza
  92.      END;
  93.      RETURN FALSE;
  94. END pretraga;
  95.  
  96.  
  97.  
  98. (*Ucitavanje iz fajlova i pravljenje liste*)
  99. PROCEDURE ucitavanjeFajla1(VAR f: File;VAR l: LISTA);
  100. VAR
  101.    str : STRING;
  102. BEGIN
  103.      f := Open(fajl1);
  104.      EOF := FALSE;
  105.      WHILE (NOT EOF) DO
  106.           RdStr(f,str);
  107.           dodajPocetak(l,str);
  108.      END;
  109.      Close(f);
  110. END ucitavanjeFajla1;
  111.  
  112. PROCEDURE ucitavanjeFajla2(VAR f: File;VAR l: LISTA);
  113. VAR
  114.    str : STRING;
  115. BEGIN
  116.      f := Open(fajl2);
  117.      EOF := FALSE;
  118.      WHILE (NOT EOF) DO
  119.           RdStr(f,str);
  120.           dodajPocetak(l,str);
  121.      END;
  122.      Close(f);
  123. END ucitavanjeFajla2;
  124.  
  125. PROCEDURE ucitavanjeFajla3(VAR f: File;VAR l: LISTA);
  126. VAR
  127.    str : STRING;
  128. BEGIN
  129.      f := Open(fajl3);
  130.      EOF := FALSE;
  131.      WHILE (NOT EOF) DO
  132.           RdStr(f,str);
  133.           dodajPocetak(l,str);
  134.      END;
  135.      Close(f);
  136. END ucitavanjeFajla3;
  137.  
  138. PROCEDURE init(VAR lista: LISTA);
  139. BEGIN
  140.      lista := NIL
  141. END init;
  142.  
  143. PROCEDURE kopiranjeListe(stara: LISTA;VAR nova: LISTA);
  144. VAR
  145.    temp : LISTA;
  146. BEGIN
  147.      init(nova);
  148.      WHILE (stara # NIL) DO
  149.           dodajPocetak(nova,stara^.kinfo);
  150.           stara := stara^.veza
  151.      END
  152. END kopiranjeListe;
  153.  
  154. PROCEDURE spojDveListe(l1,l2: LISTA;VAR nova: LISTA);
  155. VAR
  156.    temp : LISTA;
  157. BEGIN
  158.      kopiranjeListe(l1,nova);
  159.      temp := nova;
  160.      WHILE (temp^.veza # NIL) DO
  161.           temp := temp^.veza
  162.      END;
  163.      temp^.veza := l2;
  164. END spojDveListe;
  165.  
  166. PROCEDURE spojTriListe(l1,l2,l3: LISTA;VAR nova: LISTA);
  167. BEGIN
  168.      spojDveListe(l1,l2,nova);
  169.      spojDveListe(nova,l3,nova)
  170. END spojTriListe;
  171.  
  172.  
  173. VAR
  174.    f1, f2, f3: File;
  175.    Lista1, Lista2, Lista3, nova1, nova2: LISTA;
  176.  
  177. BEGIN
  178.      ucitavanjeFajla1(f1,Lista1);
  179.      ucitavanjeFajla2(f2,Lista2);
  180.      ucitavanjeFajla3(f3,Lista3);
  181.      WriteString("Stampanje liste1   "); WriteLn;
  182.      stampanje(Lista1); WriteLn;
  183.      WriteString("Stampanje liste2   "); WriteLn;
  184.      stampanje(Lista2); WriteLn;
  185.      WriteString("Stampanje liste3   "); WriteLn;
  186.      stampanje(Lista3); WriteLn;
  187.  
  188.      spojTriListe(Lista1,Lista2,Lista3,nova1);
  189.      WriteString("Stampanje liste nove   "); WriteLn;
  190.      stampanje(nova1); WriteLn;
  191.  
  192.      unistiListu(nova1);
  193.      WriteString("Stampanje liste posle praznjenja   "); WriteLn;
  194.      stampanje(nova1); WriteLn;
  195.  
  196. END strVez.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement