Advertisement
pseudocreator

SPA1 lista + file //srb {isporoveravati+zavrsiti}

Mar 22nd, 2014
371
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. MODULE lista_z2;
  2. FROM FIO IMPORT Open, Create, WrStr, RdStr, EOF, File, WrLn, Close;
  3. FROM InOut IMPORT WriteString, WriteLn, ReadString, Read;
  4. FROM Storage IMPORT ALLOCATE, DEALLOCATE;
  5. FROM Str IMPORT Compare;
  6.  
  7. TYPE
  8.     STRING = ARRAY [1..20] OF CHAR;
  9.     pok = POINTER TO Slog;
  10.     Slog = RECORD
  11.               kinf : STRING;
  12.               veza : pok
  13.            END;
  14.  
  15. VAR
  16.    str, tacka, strp : STRING;
  17.    lista : pok;
  18.    f: File;
  19.    odabir : CHAR;
  20.    again, pro, pripada : BOOLEAN;
  21.  
  22.  
  23.  
  24. PROCEDURE stampajlistu(lista: pok);
  25. VAR
  26.    temp : pok;
  27. BEGIN
  28.      temp := lista;
  29.      WHILE temp <> NIL DO
  30.           WriteString(temp^.kinf);
  31.           WriteLn;
  32.           temp := temp^.veza
  33.     END;
  34. END stampajlistu;
  35.  
  36. PROCEDURE ucitajulistu(VAR lista: pok; str: STRING);
  37. VAR
  38.    temp : pok;
  39. BEGIN
  40.      NEW(temp);
  41.      temp^.kinf := str;
  42.      temp^.veza := lista;
  43.      lista := temp
  44. END ucitajulistu;
  45.  
  46. PROCEDURE unisti(VAR lista: pok);
  47. VAR
  48.    temp : pok;
  49. BEGIN
  50.      temp := lista;
  51.      WHILE temp <> NIL DO
  52.           lista := lista^.veza;
  53.           DISPOSE(temp);
  54.           temp := lista
  55.      END
  56. END unisti;
  57.  
  58. PROCEDURE proverapripadnosti(lista : pok; sp: STRING): BOOLEAN;
  59. VAR
  60.    temp : pok;
  61. BEGIN
  62.      temp := lista;
  63.      WHILE temp <> NIL DO
  64.           IF Compare(temp^.kinf,sp) = 0 THEN
  65.             RETURN FALSE
  66.           END;
  67.           temp := temp^.veza;
  68.      END;
  69.      RETURN TRUE;
  70. END proverapripadnosti;
  71.  
  72. PROCEDURE dodajulistu(lista: pok; sp: STRING);
  73. VAR
  74.    temp, tekuci : pok;
  75. BEGIN
  76.      NEW(temp);
  77.      temp^.kinf := sp;
  78.      temp^.veza := NIL;
  79.      IF lista = NIL THEN
  80.        lista := temp;
  81.      ELSE
  82.          tekuci := lista;
  83.          WHILE tekuci^.veza <> NIL DO
  84.               tekuci := tekuci^.veza;
  85.          END;
  86.          tekuci^.veza := temp;
  87.      END;
  88. END dodajulistu;
  89.  
  90.  
  91.  
  92. BEGIN
  93.      WriteString('Da li postoji fajl iz kojeg zelite da ucitate imena? (d/n) ');
  94.      again := FALSE;
  95.      REPEAT
  96.            Read(odabir);
  97.            IF again THEN
  98.              WriteString('Unesite opet, unos mora biti (d/n) : ');
  99.              WriteLn;
  100.            END;
  101.            WriteLn;
  102.            again := TRUE;
  103.      UNTIL (CAP(odabir) = 'D') OR (CAP(odabir) = 'N');
  104.      IF CAP(odabir) = 'D' THEN
  105.         lista := NIL;
  106.         f := Open('imena.txt'); (*ovde unos imena fajla iz kojeg zelite ucitavanje*)
  107.         WHILE NOT EOF DO
  108.              RdStr(f,str);
  109.              ucitajulistu(lista,str)
  110.         END;
  111.      ELSIF (CAP(odabir) = 'N') THEN
  112.          lista := NIL;
  113.          tacka := '.';
  114.          f := Create('nekoime20.txt'); (*ime fajla koji ce se kreirati*)
  115.          WriteString('Unosite imena, sa "." se unos zavrsava');
  116.          WriteLn;
  117.          ReadString(str);
  118.          WriteLn;
  119.          IF Compare(str,tacka) = 0 THEN
  120.            pro := TRUE;
  121.          END;
  122.          WHILE NOT pro DO
  123.               WrStr(f,str);
  124.               WrLn(f);
  125.               ReadString(str);
  126.               IF Compare(str,tacka) = 0 THEN
  127.                  pro := TRUE;
  128.               END
  129.          END;
  130.          WHILE NOT EOF DO
  131.               RdStr(f,str);
  132.               ucitajulistu(lista,str)
  133.          END;
  134.      END;
  135.      stampajlistu(lista);
  136.      WriteLn; WriteLn;
  137.      WriteString('Unesite ime za koje zelite da proverite da li se'); WriteLn;
  138.      WriteString('nalazi u listi: ');
  139.      ReadString(strp);
  140.      WriteLn;
  141.      pripada := proverapripadnosti(lista,strp);
  142.      pripada := FALSE;
  143.      IF pripada THEN
  144.        WriteString('Nalazi se u listi!');
  145.        Close(f);
  146.        unisti(lista)
  147.      ELSE
  148.        WriteString('Ne nalazi se!'); WriteLn;
  149.        WriteString('Dodavanje imena u listu');
  150.        dodajulistu(lista,strp);
  151.        WriteString('Lista sa dodatim strinogm izgleda ovako: ');
  152.        WriteLn;
  153.        stampajlistu(lista);
  154.        unisti(lista)
  155.      END;
  156. END lista_z2.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement