Advertisement
pseudocreator

SPA 1 leksikografsko umetanje stringa u listu(RADNA VERZIJA)

Mar 24th, 2014
477
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. (*Radna verzija, treba proveriti zasto ne ubacuje*)
  2. (*na pocetak lista i doraditi unos*)
  3. (*Zadatak, ucitati iz fajla u listu imena koja su leksikografski poredjana*)
  4. (*zatim ucitati odredjeni string i taj string ubaciti u listu bez da se pokvari redosled*)
  5.  
  6. MODULE leks;
  7. FROM InOut IMPORT ReadString, WriteString, WriteLn;
  8. FROM Storage IMPORT ALLOCATE;
  9. FROM FIO IMPORT RdStr, EOF, Open, Close, File;
  10. FROM Str IMPORT Compare;
  11.  
  12. TYPE
  13.     STRING = ARRAY [1..20] OF CHAR;
  14.     pok = POINTER TO Slog;
  15.     Slog = RECORD
  16.              kinf : STRING;
  17.              veza : pok
  18.            END;
  19. VAR
  20.    lista : pok;
  21.    str : STRING;
  22.    f : File;
  23.  
  24.  
  25. PROCEDURE ucitaj(VAR lista: pok; string: STRING);
  26. VAR
  27.    temp : pok;
  28. BEGIN
  29.      NEW(temp);
  30.      temp^.kinf := string;
  31.      temp^.veza := lista;
  32.      lista := temp
  33. END ucitaj;
  34.  
  35.  
  36. PROCEDURE stampaj(lista: pok);
  37. VAR
  38.    temp : pok;
  39. BEGIN
  40.      temp := lista;
  41.      WriteString('Stamanje unete liste:');
  42.      WriteLn;
  43.      WHILE temp <> NIL DO
  44.           WriteString(temp^.kinf);
  45.           WriteLn;
  46.           temp := temp^.veza
  47.      END;
  48. END stampaj;
  49.  
  50.  
  51. PROCEDURE unosporedosledu(VAR lista: pok; unetistring: STRING);
  52. VAR
  53.    temp, tekuci : pok;
  54.    compare : BOOLEAN;
  55. BEGIN
  56.      NEW(temp);
  57.      temp^.kinf := unetistring;
  58.      temp^.veza := NIL;
  59.      compare := FALSE;
  60.      IF Compare(unetistring,lista^.kinf) >= 0 THEN
  61.        compare := TRUE;
  62.        WriteString('Error prvog reda!');
  63.      END;
  64.      IF (lista = NIL) OR compare THEN
  65.        temp^.veza := lista;
  66.        lista := temp
  67.      ELSE
  68.          WriteString('Error drugog reda!');
  69.          tekuci := lista;
  70.          IF Compare(tekuci^.veza^.kinf,unetistring) >= 0 THEN
  71.            compare := TRUE
  72.          END;
  73.          WHILE (tekuci^.veza <> NIL) AND compare DO
  74.               compare := FALSE;
  75.               tekuci := tekuci^.veza;
  76.               WriteString('Error treceg reda! ');
  77.               IF Compare(tekuci^.veza^.kinf,unetistring) >= 0 THEN
  78.                  compare := TRUE
  79.               END;
  80.               WriteString('Error cetvrtog reda!');
  81.          END;
  82.          WriteString('Greska pri dodeli!');
  83.          temp^.veza := tekuci^.veza;
  84.          tekuci^.veza := temp
  85.      END;
  86. END unosporedosledu;
  87.  
  88. BEGIN
  89.      lista := NIL;
  90.      f := Open('imena.txt');
  91.      WHILE NOT EOF DO
  92.           RdStr(f,str);
  93.           ucitaj(lista,str)
  94.      END;
  95.      Close(f);
  96.  
  97.      WriteString('Unos Gotov!'); WriteLn;
  98.      stampaj(lista); WriteLn;
  99.  
  100.      WriteString('unosporedosledu!'); WriteLn;
  101.      WriteString('Unesite string koji zelite da unesete leksikografski u list: ');
  102.      ReadString(str); WriteLn;
  103.      unosporedosledu(lista,str);
  104.      WriteString('Stampanje liste posle leksikografskog unosa!:  ');
  105.      WriteLn; WriteLn;
  106.      stampaj(lista);
  107.  
  108. END leks.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement