X-Git-Url: http://svarog.pmf.uns.ac.rs/gitweb/?p=spa2-teorijske-vezbe.git;a=blobdiff_plain;f=01.%20Dvosmerni%20Recnik%2FXDS%2FRECNIKATP.MOD;fp=01.%20Dvosmerni%20Recnik%2FXDS%2FRECNIKATP.MOD;h=0000000000000000000000000000000000000000;hp=197789342bcbc5293eabe0e430e2e7ff358f8251;hb=8a74ce20c68b61b8992a348e34c43671116e9549;hpb=a35f3e51789ace81cea01e548963568da918635f diff --git a/01. Dvosmerni Recnik/XDS/RECNIKATP.MOD b/01. Dvosmerni Recnik/XDS/RECNIKATP.MOD deleted file mode 100644 index 1977893..0000000 --- a/01. Dvosmerni Recnik/XDS/RECNIKATP.MOD +++ /dev/null @@ -1,186 +0,0 @@ -IMPLEMENTATION MODULE RecnikATP; - - FROM IO IMPORT - RdKey, WrStr, WrLn, WrCard; - FROM SYSTEM IMPORT - TSIZE; - FROM Str IMPORT - Compare; - FROM Storage IMPORT - ALLOCATE, DEALLOCATE; - - PROCEDURE Hash(Rec: String): Indeksi; - VAR - i, Zbir, Temp: CARDINAL; - BEGIN - Zbir:= 0; - i:= 1; - WHILE (i <= MaxDuzRec) AND (Rec[i] # CHR(0)) DO - Temp:= (ORD(Rec[i]) * ORD(Rec[i])) MOD Broj; - Zbir:= (Zbir + Temp) MOD Broj; - INC(i); - END; - RETURN Zbir; - END Hash; - - PROCEDURE Inicijalizuj(VAR R: Recnik); - VAR - i: Indeksi; - BEGIN - WITH R DO - BrojReci:= 0; - FOR i := 0 TO MaxTabela DO - NEW(Domace[i]); - Domace[i]^.Veza := Domace[i]; - NEW(Strane[i]); - Strane[i]^.Veza := Strane[i] - END; - END; - END Inicijalizuj; - - PROCEDURE Unisti(VAR R: Recnik); - VAR - i: Indeksi; - Tekuci: Lista; - BEGIN - FOR i:= 0 TO MaxTabela DO - WHILE R.Domace[i] # R.Domace[i]^.Veza DO - Tekuci:= R.Domace[i]^.Veza; - R.Domace[i]^.Veza:= Tekuci^.Veza; - DISPOSE(Tekuci); - END; - DISPOSE(R.Domace[i]); - WHILE R.Strane[i] # R.Strane[i]^.Veza DO - Tekuci:= R.Strane[i]^.Veza; - R.Strane[i]^.Veza:= Tekuci^.Veza; - DISPOSE(Tekuci); - END; - DISPOSE(R.Strane[i]); - END; - END Unisti; - - PROCEDURE Nadji(VAR Rec: String; - VAR Tab: Tabela; - VAR Prethodni: Lista; - VAR Nadjen: BOOLEAN); - VAR - Pozicija: Indeksi; - BEGIN - Pozicija:= Hash(Rec); - Prethodni:= Tab[Pozicija]; - Prethodni^.Rec:= Rec; - IF Prethodni^.Veza = Prethodni THEN - Nadjen:= FALSE; - ELSE - WHILE Compare(Prethodni^.Veza^.Rec, Rec) # 0 DO - Prethodni:= Prethodni^.Veza; - END; - Nadjen:= Prethodni^.Veza # Tab[Pozicija] - END; - END Nadji; - - PROCEDURE Ubaci(DomacaRec, StranaRec: String; - VAR R: Recnik; - VAR Duplikat: BOOLEAN); - VAR - NadjenDom, NadjenStr: BOOLEAN; - PrethodniDom, PrethodniStr, PomDom, PomStr: Lista; - BEGIN - - Nadji(DomacaRec, R.Domace, PrethodniDom, NadjenDom); - Nadji(StranaRec, R.Strane, PrethodniStr, NadjenStr); - - IF NadjenDom OR NadjenStr THEN - Duplikat:= TRUE; - ELSE - - Duplikat := FALSE; - - NEW(PomDom); - PomDom^.Rec:= DomacaRec; - PomDom^.Veza:= PrethodniDom^.Veza; - PrethodniDom^.Veza:= PomDom; - - NEW(PomStr); - PomStr^.Rec:= StranaRec; - PomStr^.Veza:= PrethodniStr^.Veza; - PrethodniStr^.Veza:= PomStr; - - PomDom^.Prevod:= PomStr; - PomStr^.Prevod:= PomDom; - - INC(R.BrojReci); - - END; - END Ubaci; - - PROCEDURE Izbaci(Rec: String; - VAR R: Recnik; - Domaca: BOOLEAN; - VAR Ok: BOOLEAN); - VAR - Prethodni, Prethodni2, Temp, Temp2: Lista; - BEGIN - - IF Domaca THEN - Nadji(Rec, R.Domace, Prethodni, Ok); - ELSE - Nadji(Rec, R.Strane, Prethodni, Ok); - END; - - IF Ok THEN - - Temp:= Prethodni^.Veza; - Prethodni^.Veza:= Temp^.Veza; - - Temp2:= Temp^.Prevod; - Prethodni2:= Temp2^.Veza; - WHILE Prethodni2^.Veza # Temp2 DO - Prethodni2:= Prethodni2^.Veza; - END; - Prethodni2^.Veza:= Temp2^.Veza; - - DISPOSE(Temp); - DISPOSE(Temp2); - - DEC(R.BrojReci); - END; - END Izbaci; - - PROCEDURE Prevedi(StranuNaDomacu: BOOLEAN; - Rec: String; - VAR Prevod: String; - VAR R: Recnik; - VAR Ok: BOOLEAN); - VAR - Prethodni: Lista; - BEGIN - IF StranuNaDomacu THEN - Nadji(Rec, R.Strane, Prethodni, Ok); - ELSE - Nadji(Rec, R.Domace, Prethodni, Ok); - END; - IF Ok THEN - Prevod:= Prethodni^.Veza^.Prevod^.Rec; - END - END Prevedi; - - PROCEDURE Sadrzaj(VAR R: Recnik); - VAR - i: Indeksi; - Tekuci: Lista; - BEGIN - WrStr('Sadrzaj recnika:'); - FOR i:= 0 TO MaxTabela DO - Tekuci:= R.Domace[i]^.Veza; - WHILE Tekuci# R.Domace[i] DO - WrLn; - WrStr(Tekuci^.Rec); - WrStr(' --------- '); - WrStr(Tekuci^.Prevod^.Rec); - Tekuci:= Tekuci^.Veza; - END; - END; - END Sadrzaj; - -END RecnikATP.