gitweb on Svarog
projekti pod git sistemom za održavanje verzija -- projects under the git version control system
summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: cfda726)
raw | patch | inline | side by side (parent: cfda726)
author | Doni Pracner <quinnuendo@gmail.com> | |
Mon, 21 Oct 2013 12:44:36 +0000 (14:44 +0200) | ||
committer | Doni Pracner <quinnuendo@gmail.com> | |
Mon, 21 Oct 2013 12:44:36 +0000 (14:44 +0200) |
01. Dvosmerni Recnik/Prezentacija.ppt | [new file with mode: 0644] | patch | blob |
01. Dvosmerni Recnik/TopSpeed/RECNIKAT.DEF | [new file with mode: 0644] | patch | blob |
01. Dvosmerni Recnik/TopSpeed/RECNIKAT.MOD | [new file with mode: 0644] | patch | blob |
01. Dvosmerni Recnik/TopSpeed/RECNIKTE.MOD | [new file with mode: 0644] | patch | blob |
01. Dvosmerni Recnik/XDS/RECNIKATP.DEF | [new file with mode: 0644] | patch | blob |
01. Dvosmerni Recnik/XDS/RECNIKATP.MOD | [new file with mode: 0644] | patch | blob |
01. Dvosmerni Recnik/XDS/RECNIKTEST.MOD | [new file with mode: 0644] | patch | blob |
Cas01/Prezentacija.ppt | [deleted file] | patch | blob | history |
Cas01/RECNIKAT.DEF | [deleted file] | patch | blob | history |
Cas01/RECNIKAT.MOD | [deleted file] | patch | blob | history |
Cas01/RECNIKTE.MOD | [deleted file] | patch | blob | history |
diff --git a/01. Dvosmerni Recnik/Prezentacija.ppt b/01. Dvosmerni Recnik/Prezentacija.ppt
new file mode 100644 (file)
index 0000000..6ff7ded
Binary files /dev/null and b/01. Dvosmerni Recnik/Prezentacija.ppt differ
index 0000000..6ff7ded
Binary files /dev/null and b/01. Dvosmerni Recnik/Prezentacija.ppt differ
diff --git a/01. Dvosmerni Recnik/TopSpeed/RECNIKAT.DEF b/01. Dvosmerni Recnik/TopSpeed/RECNIKAT.DEF
--- /dev/null
@@ -0,0 +1,42 @@
+DEFINITION MODULE RecnikATP;\r
+\r
+ CONST\r
+ Broj = 11; (* Neki prost broj *)\r
+ MaxDuzRec = 50;\r
+ MaxTabela = Broj - 1;\r
+\r
+ TYPE\r
+ String = ARRAY [1 .. MaxDuzRec] OF CHAR;\r
+ Lista = POINTER TO Element;\r
+ Element = RECORD\r
+ Veza, Prevod: Lista;\r
+ Rec: String;\r
+ END;\r
+ Indeksi = [0 .. MaxTabela];\r
+ Tabela = ARRAY Indeksi OF Lista;\r
+ Recnik = RECORD\r
+ BrojReci: CARDINAL;\r
+ Domace, Strane: Tabela;\r
+ END;\r
+\r
+ PROCEDURE Inicijalizuj(VAR R: Recnik);\r
+ PROCEDURE Unisti(VAR R: Recnik);\r
+\r
+ PROCEDURE Ubaci(DomacaRec, StranaRec: String;\r
+ VAR R: Recnik;\r
+ VAR Duplikat: BOOLEAN);\r
+\r
+ PROCEDURE Izbaci(Rec: String;\r
+ VAR R: Recnik;\r
+ Domaca: BOOLEAN;\r
+ VAR Ok: BOOLEAN);\r
+\r
+ PROCEDURE Prevedi(StranaNaDomacu: BOOLEAN;\r
+ Rec: String;\r
+ VAR Prevod: String;\r
+ VAR R: Recnik;\r
+ VAR Ok: BOOLEAN);\r
+\r
+ PROCEDURE Sadrzaj(VAR R: Recnik);\r
+\r
+END RecnikATP.\r
diff --git a/01. Dvosmerni Recnik/TopSpeed/RECNIKAT.MOD b/01. Dvosmerni Recnik/TopSpeed/RECNIKAT.MOD
--- /dev/null
@@ -0,0 +1,186 @@
+IMPLEMENTATION MODULE RecnikATP;\r
+\r
+ FROM IO IMPORT\r
+ RdKey, WrStr, WrLn, WrCard;\r
+ FROM SYSTEM IMPORT\r
+ TSIZE;\r
+ FROM Str IMPORT\r
+ Compare;\r
+ FROM Storage IMPORT\r
+ ALLOCATE, DEALLOCATE;\r
+\r
+ PROCEDURE Hash(Rec: String): Indeksi;\r
+ VAR\r
+ i, Zbir, Temp: CARDINAL;\r
+ BEGIN\r
+ Zbir:= 0;\r
+ i:= 1;\r
+ WHILE (i <= MaxDuzRec) AND (Rec[i] # CHR(0)) DO\r
+ Temp:= (ORD(Rec[i]) * ORD(Rec[i])) MOD Broj;\r
+ Zbir:= (Zbir + Temp) MOD Broj;\r
+ INC(i);\r
+ END;\r
+ RETURN Zbir;\r
+ END Hash;\r
+\r
+ PROCEDURE Inicijalizuj(VAR R: Recnik);\r
+ VAR\r
+ i: Indeksi;\r
+ BEGIN\r
+ WITH R DO\r
+ BrojReci:= 0;\r
+ FOR i := 0 TO MaxTabela DO\r
+ NEW(Domace[i]);\r
+ Domace[i]^.Veza := Domace[i];\r
+ NEW(Strane[i]);\r
+ Strane[i]^.Veza := Strane[i]\r
+ END;\r
+ END;\r
+ END Inicijalizuj;\r
+\r
+ PROCEDURE Unisti(VAR R: Recnik);\r
+ VAR\r
+ i: Indeksi;\r
+ Tekuci: Lista;\r
+ BEGIN\r
+ FOR i:= 0 TO MaxTabela DO\r
+ WHILE R.Domace[i] # R.Domace[i]^.Veza DO\r
+ Tekuci:= R.Domace[i]^.Veza;\r
+ R.Domace[i]^.Veza:= Tekuci^.Veza;\r
+ DISPOSE(Tekuci);\r
+ END;\r
+ DISPOSE(R.Domace[i]);\r
+ WHILE R.Strane[i] # R.Strane[i]^.Veza DO\r
+ Tekuci:= R.Strane[i]^.Veza;\r
+ R.Strane[i]^.Veza:= Tekuci^.Veza;\r
+ DISPOSE(Tekuci);\r
+ END;\r
+ DISPOSE(R.Strane[i]);\r
+ END;\r
+ END Unisti;\r
+\r
+ PROCEDURE Nadji(VAR Rec: String;\r
+ VAR Tab: Tabela;\r
+ VAR Prethodni: Lista;\r
+ VAR Nadjen: BOOLEAN);\r
+ VAR\r
+ Pozicija: Indeksi;\r
+ BEGIN\r
+ Pozicija:= Hash(Rec);\r
+ Prethodni:= Tab[Pozicija];\r
+ Prethodni^.Rec:= Rec;\r
+ IF Prethodni^.Veza = Prethodni THEN\r
+ Nadjen:= FALSE;\r
+ ELSE\r
+ WHILE Compare(Prethodni^.Veza^.Rec, Rec) # 0 DO\r
+ Prethodni:= Prethodni^.Veza;\r
+ END;\r
+ Nadjen:= Prethodni^.Veza # Tab[Pozicija]\r
+ END;\r
+ END Nadji;\r
+\r
+ PROCEDURE Ubaci(DomacaRec, StranaRec: String;\r
+ VAR R: Recnik;\r
+ VAR Duplikat: BOOLEAN);\r
+ VAR\r
+ NadjenDom, NadjenStr: BOOLEAN;\r
+ PrethodniDom, PrethodniStr, PomDom, PomStr: Lista;\r
+ BEGIN\r
+\r
+ Nadji(DomacaRec, R.Domace, PrethodniDom, NadjenDom);\r
+ Nadji(StranaRec, R.Strane, PrethodniStr, NadjenStr);\r
+\r
+ IF NadjenDom OR NadjenStr THEN\r
+ Duplikat:= TRUE;\r
+ ELSE\r
+\r
+ Duplikat := FALSE;\r
+\r
+ NEW(PomDom);\r
+ PomDom^.Rec:= DomacaRec;\r
+ PomDom^.Veza:= PrethodniDom^.Veza;\r
+ PrethodniDom^.Veza:= PomDom;\r
+\r
+ NEW(PomStr);\r
+ PomStr^.Rec:= StranaRec;\r
+ PomStr^.Veza:= PrethodniStr^.Veza;\r
+ PrethodniStr^.Veza:= PomStr;\r
+\r
+ PomDom^.Prevod:= PomStr;\r
+ PomStr^.Prevod:= PomDom;\r
+\r
+ INC(R.BrojReci);\r
+\r
+ END;\r
+ END Ubaci;\r
+\r
+ PROCEDURE Izbaci(Rec: String;\r
+ VAR R: Recnik;\r
+ Domaca: BOOLEAN;\r
+ VAR Ok: BOOLEAN);\r
+ VAR\r
+ Prethodni, Prethodni2, Temp, Temp2: Lista;\r
+ BEGIN\r
+\r
+ IF Domaca THEN\r
+ Nadji(Rec, R.Domace, Prethodni, Ok);\r
+ ELSE\r
+ Nadji(Rec, R.Strane, Prethodni, Ok);\r
+ END;\r
+\r
+ IF Ok THEN\r
+\r
+ Temp:= Prethodni^.Veza;\r
+ Prethodni^.Veza:= Temp^.Veza;\r
+\r
+ Temp2:= Temp^.Prevod;\r
+ Prethodni2:= Temp2^.Veza;\r
+ WHILE Prethodni2^.Veza # Temp2 DO\r
+ Prethodni2:= Prethodni2^.Veza;\r
+ END;\r
+ Prethodni2^.Veza:= Temp2^.Veza;\r
+\r
+ DISPOSE(Temp);\r
+ DISPOSE(Temp2);\r
+\r
+ DEC(R.BrojReci);\r
+ END;\r
+ END Izbaci;\r
+\r
+ PROCEDURE Prevedi(StranuNaDomacu: BOOLEAN;\r
+ Rec: String;\r
+ VAR Prevod: String;\r
+ VAR R: Recnik;\r
+ VAR Ok: BOOLEAN);\r
+ VAR\r
+ Prethodni: Lista;\r
+ BEGIN\r
+ IF StranuNaDomacu THEN\r
+ Nadji(Rec, R.Strane, Prethodni, Ok);\r
+ ELSE\r
+ Nadji(Rec, R.Domace, Prethodni, Ok);\r
+ END;\r
+ IF Ok THEN\r
+ Prevod:= Prethodni^.Veza^.Prevod^.Rec;\r
+ END\r
+ END Prevedi;\r
+\r
+ PROCEDURE Sadrzaj(VAR R: Recnik);\r
+ VAR\r
+ i: Indeksi;\r
+ Tekuci: Lista;\r
+ BEGIN\r
+ WrStr('Sadrzaj recnika:');\r
+ FOR i:= 0 TO MaxTabela DO\r
+ Tekuci:= R.Domace[i]^.Veza;\r
+ WHILE Tekuci# R.Domace[i] DO\r
+ WrLn;\r
+ WrStr(Tekuci^.Rec);\r
+ WrStr(' --------- ');\r
+ WrStr(Tekuci^.Prevod^.Rec);\r
+ Tekuci:= Tekuci^.Veza;\r
+ END;\r
+ END;\r
+ END Sadrzaj;\r
+\r
+END RecnikATP.\r
diff --git a/01. Dvosmerni Recnik/TopSpeed/RECNIKTE.MOD b/01. Dvosmerni Recnik/TopSpeed/RECNIKTE.MOD
--- /dev/null
@@ -0,0 +1,116 @@
+MODULE RecnikTest;\r
+\r
+ FROM RecnikATP IMPORT\r
+ String, Recnik, Inicijalizuj, Ubaci, Izbaci, Sadrzaj, Prevedi, Unisti;\r
+ FROM IO IMPORT\r
+ WrLn, WrStr, RdStr, WrCard, RdKey, WrChar;\r
+ FROM Window IMPORT\r
+ Clear;\r
+\r
+ VAR\r
+ R: Recnik;\r
+ Rec, Prevod: String;\r
+ Izbor, Izb: CHAR;\r
+ Ok, Duplikat, Domaca, StrNaDom: BOOLEAN;\r
+\r
+ PROCEDURE Meni(VAR Izbor: CHAR);\r
+ TYPE\r
+ Slova = SET OF CHAR;\r
+ VAR\r
+ i: CARDINAL;\r
+ BEGIN\r
+ Clear;\r
+ FOR i:= 1 TO 8 DO\r
+ WrLn;\r
+ END;\r
+ WrStr(' P --- prevod reci'); WrLn;\r
+ WrStr(' B --- broj reci u recniku'); WrLn;\r
+ WrStr(' U --- ubacivanje nove reci i njenog prevoda u recnik'); WrLn;\r
+ WrStr(' I --- izbacivanje reci i njenog prevoda iz recnika'); WrLn;\r
+ WrStr(' S --- sekvencijalni prikaz recnika'); WrLn;\r
+ WrStr(' Q --- kraj rada');\r
+ REPEAT\r
+ Izbor:= CAP(RdKey());\r
+ UNTIL Izbor IN Slova {'P', 'B', 'U', 'I', 'S', 'Q'};\r
+ Clear;\r
+ END Meni;\r
+\r
+ PROCEDURE Pauza;\r
+ VAR\r
+ Ch: CHAR;\r
+ BEGIN\r
+ Ch:= RdKey();\r
+ END Pauza;\r
+\r
+BEGIN\r
+ Inicijalizuj(R);\r
+ REPEAT\r
+ Meni(Izbor);\r
+ CASE Izbor OF\r
+ 'P': REPEAT\r
+ WrStr('1) prevod strane reci'); WrLn;\r
+ WrStr('2) prevod domace reci'); WrLn;\r
+ WrLn;\r
+ WrStr("Unesite '1' ili '2' --- ");\r
+ Izb:= RdKey();\r
+ WrChar(Izb); WrLn;\r
+ UNTIL (Izb = '1') OR (Izb = '2');\r
+ StrNaDom:= Izb = '1';\r
+ IF StrNaDom THEN\r
+ WrStr('Unesite stranu rec ---- ');\r
+ RdStr(Rec);\r
+ Prevedi(StrNaDom, Rec, Prevod, R, Ok);\r
+ IF Ok THEN\r
+ WrStr('Prevod ---------------- ');\r
+ WrStr(Prevod);\r
+ ELSE\r
+ WrStr('Zadata rec se ne nalazi u recniku.');\r
+ END;\r
+ ELSE\r
+ WrStr('Unesite domacu rec ---- ');\r
+ RdStr(Rec);\r
+ Prevedi(StrNaDom, Rec, Prevod, R, Ok);\r
+ IF Ok THEN\r
+ WrStr('Prevod ---------------- ');\r
+ WrStr(Prevod);\r
+ ELSE\r
+ WrStr('Zadata rec se ne nalazi u recniku.');\r
+ END;\r
+ END;\r
+ Pauza; |\r
+ 'B': WrStr('Recnik raspolaze fondom od ');\r
+ WrCard(R.BrojReci, 1);\r
+ WrStr(' reci.');\r
+ Pauza; |\r
+ 'U': WrStr('Unesite novu domacu rec ----- ');\r
+ RdStr(Rec);\r
+ WrStr('Unesite njen prevod -------- ');\r
+ RdStr(Prevod);\r
+ Ubaci(Rec, Prevod, R, Duplikat);\r
+ IF Duplikat THEN\r
+ WrStr('U recniku se vec nalazi data rec.');\r
+ ELSE\r
+ WrStr('Upisano.');\r
+ END;\r
+ Pauza; |\r
+ 'I': WrStr('Unesite rec --- ');\r
+ RdStr(Rec);\r
+ REPEAT\r
+ WrStr('Da li je uneta rec domaca ili strana? (d/s) ');\r
+ Izb:= RdKey();\r
+ WrLn;\r
+ UNTIL (CAP(Izb) = 'D') OR (CAP(Izb) = 'S');\r
+ Domaca:= CAP(Izb) = 'D';\r
+ Izbaci(Rec, R, Domaca, Ok);\r
+ IF Ok THEN\r
+ WrStr('Izbrisano.')\r
+ ELSE\r
+ WrStr('Rec se nije ni nalazila u recniku.')\r
+ END;\r
+ Pauza; |\r
+ 'S': Sadrzaj(R);\r
+ Pauza;\r
+ END;\r
+ UNTIL Izbor = 'Q';\r
+ Unisti(R);\r
+END RecnikTest.\r
diff --git a/01. Dvosmerni Recnik/XDS/RECNIKATP.DEF b/01. Dvosmerni Recnik/XDS/RECNIKATP.DEF
--- /dev/null
@@ -0,0 +1,42 @@
+DEFINITION MODULE RecnikATP;\r
+\r
+ CONST\r
+ Broj = 11; (* Neki prost broj *)\r
+ MaxDuzRec = 50;\r
+ MaxTabela = Broj - 1;\r
+\r
+ TYPE\r
+ String = ARRAY [1 .. MaxDuzRec] OF CHAR;\r
+ Lista = POINTER TO Element;\r
+ Element = RECORD\r
+ Veza, Prevod: Lista;\r
+ Rec: String;\r
+ END;\r
+ Indeksi = [0 .. MaxTabela];\r
+ Tabela = ARRAY Indeksi OF Lista;\r
+ Recnik = RECORD\r
+ BrojReci: CARDINAL;\r
+ Domace, Strane: Tabela;\r
+ END;\r
+\r
+ PROCEDURE Inicijalizuj(VAR R: Recnik);\r
+ PROCEDURE Unisti(VAR R: Recnik);\r
+\r
+ PROCEDURE Ubaci(DomacaRec, StranaRec: String;\r
+ VAR R: Recnik;\r
+ VAR Duplikat: BOOLEAN);\r
+\r
+ PROCEDURE Izbaci(Rec: String;\r
+ VAR R: Recnik;\r
+ Domaca: BOOLEAN;\r
+ VAR Ok: BOOLEAN);\r
+\r
+ PROCEDURE Prevedi(StranaNaDomacu: BOOLEAN;\r
+ Rec: String;\r
+ VAR Prevod: String;\r
+ VAR R: Recnik;\r
+ VAR Ok: BOOLEAN);\r
+\r
+ PROCEDURE Sadrzaj(VAR R: Recnik);\r
+\r
+END RecnikATP.\r
diff --git a/01. Dvosmerni Recnik/XDS/RECNIKATP.MOD b/01. Dvosmerni Recnik/XDS/RECNIKATP.MOD
--- /dev/null
@@ -0,0 +1,186 @@
+IMPLEMENTATION MODULE RecnikATP;\r
+\r
+ FROM IO IMPORT\r
+ RdKey, WrStr, WrLn, WrCard;\r
+ FROM SYSTEM IMPORT\r
+ TSIZE;\r
+ FROM Str IMPORT\r
+ Compare;\r
+ FROM Storage IMPORT\r
+ ALLOCATE, DEALLOCATE;\r
+\r
+ PROCEDURE Hash(Rec: String): Indeksi;\r
+ VAR\r
+ i, Zbir, Temp: CARDINAL;\r
+ BEGIN\r
+ Zbir:= 0;\r
+ i:= 1;\r
+ WHILE (i <= MaxDuzRec) AND (Rec[i] # CHR(0)) DO\r
+ Temp:= (ORD(Rec[i]) * ORD(Rec[i])) MOD Broj;\r
+ Zbir:= (Zbir + Temp) MOD Broj;\r
+ INC(i);\r
+ END;\r
+ RETURN Zbir;\r
+ END Hash;\r
+\r
+ PROCEDURE Inicijalizuj(VAR R: Recnik);\r
+ VAR\r
+ i: Indeksi;\r
+ BEGIN\r
+ WITH R DO\r
+ BrojReci:= 0;\r
+ FOR i := 0 TO MaxTabela DO\r
+ NEW(Domace[i]);\r
+ Domace[i]^.Veza := Domace[i];\r
+ NEW(Strane[i]);\r
+ Strane[i]^.Veza := Strane[i]\r
+ END;\r
+ END;\r
+ END Inicijalizuj;\r
+\r
+ PROCEDURE Unisti(VAR R: Recnik);\r
+ VAR\r
+ i: Indeksi;\r
+ Tekuci: Lista;\r
+ BEGIN\r
+ FOR i:= 0 TO MaxTabela DO\r
+ WHILE R.Domace[i] # R.Domace[i]^.Veza DO\r
+ Tekuci:= R.Domace[i]^.Veza;\r
+ R.Domace[i]^.Veza:= Tekuci^.Veza;\r
+ DISPOSE(Tekuci);\r
+ END;\r
+ DISPOSE(R.Domace[i]);\r
+ WHILE R.Strane[i] # R.Strane[i]^.Veza DO\r
+ Tekuci:= R.Strane[i]^.Veza;\r
+ R.Strane[i]^.Veza:= Tekuci^.Veza;\r
+ DISPOSE(Tekuci);\r
+ END;\r
+ DISPOSE(R.Strane[i]);\r
+ END;\r
+ END Unisti;\r
+\r
+ PROCEDURE Nadji(VAR Rec: String;\r
+ VAR Tab: Tabela;\r
+ VAR Prethodni: Lista;\r
+ VAR Nadjen: BOOLEAN);\r
+ VAR\r
+ Pozicija: Indeksi;\r
+ BEGIN\r
+ Pozicija:= Hash(Rec);\r
+ Prethodni:= Tab[Pozicija];\r
+ Prethodni^.Rec:= Rec;\r
+ IF Prethodni^.Veza = Prethodni THEN\r
+ Nadjen:= FALSE;\r
+ ELSE\r
+ WHILE Compare(Prethodni^.Veza^.Rec, Rec) # 0 DO\r
+ Prethodni:= Prethodni^.Veza;\r
+ END;\r
+ Nadjen:= Prethodni^.Veza # Tab[Pozicija]\r
+ END;\r
+ END Nadji;\r
+\r
+ PROCEDURE Ubaci(DomacaRec, StranaRec: String;\r
+ VAR R: Recnik;\r
+ VAR Duplikat: BOOLEAN);\r
+ VAR\r
+ NadjenDom, NadjenStr: BOOLEAN;\r
+ PrethodniDom, PrethodniStr, PomDom, PomStr: Lista;\r
+ BEGIN\r
+\r
+ Nadji(DomacaRec, R.Domace, PrethodniDom, NadjenDom);\r
+ Nadji(StranaRec, R.Strane, PrethodniStr, NadjenStr);\r
+\r
+ IF NadjenDom OR NadjenStr THEN\r
+ Duplikat:= TRUE;\r
+ ELSE\r
+\r
+ Duplikat := FALSE;\r
+\r
+ NEW(PomDom);\r
+ PomDom^.Rec:= DomacaRec;\r
+ PomDom^.Veza:= PrethodniDom^.Veza;\r
+ PrethodniDom^.Veza:= PomDom;\r
+\r
+ NEW(PomStr);\r
+ PomStr^.Rec:= StranaRec;\r
+ PomStr^.Veza:= PrethodniStr^.Veza;\r
+ PrethodniStr^.Veza:= PomStr;\r
+\r
+ PomDom^.Prevod:= PomStr;\r
+ PomStr^.Prevod:= PomDom;\r
+\r
+ INC(R.BrojReci);\r
+\r
+ END;\r
+ END Ubaci;\r
+\r
+ PROCEDURE Izbaci(Rec: String;\r
+ VAR R: Recnik;\r
+ Domaca: BOOLEAN;\r
+ VAR Ok: BOOLEAN);\r
+ VAR\r
+ Prethodni, Prethodni2, Temp, Temp2: Lista;\r
+ BEGIN\r
+\r
+ IF Domaca THEN\r
+ Nadji(Rec, R.Domace, Prethodni, Ok);\r
+ ELSE\r
+ Nadji(Rec, R.Strane, Prethodni, Ok);\r
+ END;\r
+\r
+ IF Ok THEN\r
+\r
+ Temp:= Prethodni^.Veza;\r
+ Prethodni^.Veza:= Temp^.Veza;\r
+\r
+ Temp2:= Temp^.Prevod;\r
+ Prethodni2:= Temp2^.Veza;\r
+ WHILE Prethodni2^.Veza # Temp2 DO\r
+ Prethodni2:= Prethodni2^.Veza;\r
+ END;\r
+ Prethodni2^.Veza:= Temp2^.Veza;\r
+\r
+ DISPOSE(Temp);\r
+ DISPOSE(Temp2);\r
+\r
+ DEC(R.BrojReci);\r
+ END;\r
+ END Izbaci;\r
+\r
+ PROCEDURE Prevedi(StranuNaDomacu: BOOLEAN;\r
+ Rec: String;\r
+ VAR Prevod: String;\r
+ VAR R: Recnik;\r
+ VAR Ok: BOOLEAN);\r
+ VAR\r
+ Prethodni: Lista;\r
+ BEGIN\r
+ IF StranuNaDomacu THEN\r
+ Nadji(Rec, R.Strane, Prethodni, Ok);\r
+ ELSE\r
+ Nadji(Rec, R.Domace, Prethodni, Ok);\r
+ END;\r
+ IF Ok THEN\r
+ Prevod:= Prethodni^.Veza^.Prevod^.Rec;\r
+ END\r
+ END Prevedi;\r
+\r
+ PROCEDURE Sadrzaj(VAR R: Recnik);\r
+ VAR\r
+ i: Indeksi;\r
+ Tekuci: Lista;\r
+ BEGIN\r
+ WrStr('Sadrzaj recnika:');\r
+ FOR i:= 0 TO MaxTabela DO\r
+ Tekuci:= R.Domace[i]^.Veza;\r
+ WHILE Tekuci# R.Domace[i] DO\r
+ WrLn;\r
+ WrStr(Tekuci^.Rec);\r
+ WrStr(' --------- ');\r
+ WrStr(Tekuci^.Prevod^.Rec);\r
+ Tekuci:= Tekuci^.Veza;\r
+ END;\r
+ END;\r
+ END Sadrzaj;\r
+\r
+END RecnikATP.\r
diff --git a/01. Dvosmerni Recnik/XDS/RECNIKTEST.MOD b/01. Dvosmerni Recnik/XDS/RECNIKTEST.MOD
--- /dev/null
@@ -0,0 +1,141 @@
+MODULE RecnikTest;\r
+\r
+ FROM RecnikATP IMPORT\r
+ String, Recnik, Inicijalizuj, Ubaci, Izbaci, Sadrzaj, Prevedi, Unisti;\r
+ FROM IO IMPORT\r
+ WrLn, WrStr, RdStr, WrCard, RdChar, WrChar, RdInt;\r
+\r
+\r
+ VAR\r
+ R: Recnik;\r
+ Rec, Prevod: String;\r
+ Izbor: CHAR;\r
+ Izb : INTEGER;\r
+ Ok, Duplikat, Domaca, StrNaDom: BOOLEAN;\r
+\r
+PROCEDURE Clr(r : CARDINAL);\r
+VAR\r
+ i : CARDINAL;\r
+BEGIN\r
+ FOR i:=1 TO r DO\r
+ WrLn;\r
+ END;\r
+END Clr;\r
+\r
+PROCEDURE Clear();\r
+BEGIN\r
+ Clr(40);\r
+END Clear;\r
+\r
+ PROCEDURE Meni(VAR Izbor: CHAR);\r
+ TYPE\r
+ Slova = SET OF CHAR;\r
+ VAR\r
+ i: CARDINAL;\r
+ BEGIN\r
+ Clear;\r
+ FOR i:= 1 TO 8 DO\r
+ WrLn;\r
+ END;\r
+ WrStr(' P --- prevod reci'); WrLn;\r
+ WrStr(' B --- broj reci u recniku'); WrLn;\r
+ WrStr(' U --- ubacivanje nove reci i njenog prevoda u recnik'); WrLn;\r
+ WrStr(' I --- izbacivanje reci i njenog prevoda iz recnika'); WrLn;\r
+ WrStr(' S --- sekvencijalni prikaz recnika'); WrLn;\r
+ WrStr(' Q --- kraj rada');\r
+ Clr(7);\r
+ REPEAT\r
+ Izbor:= CAP(RdChar());\r
+ UNTIL Izbor IN Slova {'P', 'B', 'U', 'I', 'S', 'Q'};\r
+ Clear;\r
+ END Meni;\r
+\r
+ PROCEDURE Pauza;\r
+ VAR\r
+ c: CHAR;\r
+ BEGIN\r
+ WrLn;\r
+ WrStr('Enter za nastavak');WrLn;\r
+ (* visak RdChar-ova zbog Entera i sl *)\r
+ c := RdChar();\r
+ c := RdChar();\r
+ c := RdChar();\r
+ END Pauza;\r
+\r
+BEGIN\r
+ Inicijalizuj(R);\r
+ REPEAT\r
+ Meni(Izbor);\r
+ CASE Izbor OF\r
+ 'P': REPEAT\r
+ WrStr('1) prevod strane reci'); WrLn;\r
+ WrStr('2) prevod domace reci'); WrLn;\r
+ WrLn;\r
+ WrStr("Unesite '1' ili '2' --- ");\r
+ Izb:= RdInt();\r
+ WrLn;\r
+ UNTIL (Izb = 1) OR (Izb = 2);\r
+ StrNaDom:= Izb = 1;\r
+ IF StrNaDom THEN\r
+ WrStr('Unesite stranu rec ---- ');\r
+ RdStr(Rec);\r
+ Prevedi(StrNaDom, Rec, Prevod, R, Ok);\r
+ IF Ok THEN\r
+ WrStr('Prevod ---------------- ');\r
+ WrStr(Prevod);\r
+ ELSE\r
+ WrStr('Zadata rec se ne nalazi u recniku.');\r
+ END;\r
+ ELSE\r
+ WrStr('Unesite domacu rec ---- ');\r
+ RdStr(Rec);\r
+ Prevedi(StrNaDom, Rec, Prevod, R, Ok);\r
+ IF Ok THEN\r
+ WrStr('Prevod ---------------- ');\r
+ WrStr(Prevod);\r
+ ELSE\r
+ WrStr('Zadata rec se ne nalazi u recniku.');\r
+ END;\r
+ END;\r
+ Pauza; |\r
+ 'B': WrStr('Recnik raspolaze fondom od ');\r
+ WrCard(R.BrojReci, 1);\r
+ WrStr(' reci.');\r
+ Pauza; |\r
+ 'U': WrStr('Unesite novu domacu rec ----- ');\r
+ RdStr(Rec);\r
+ WrStr('Unesite njen prevod -------- ');\r
+ RdStr(Prevod);\r
+ Ubaci(Rec, Prevod, R, Duplikat);\r
+ IF Duplikat THEN\r
+ WrStr('U recniku se vec nalazi data rec.');\r
+ ELSE\r
+ WrStr('Upisano.');\r
+ END;\r
+ Pauza; |\r
+ 'I': WrStr('Unesite rec --- ');\r
+ RdStr(Rec);\r
+ REPEAT\r
+ WrStr('uneta rec je'); WrLn;\r
+ WrStr('1) strana'); WrLn;\r
+ WrStr('2) domaca'); WrLn;\r
+ WrLn;\r
+ WrStr("Unesite '1' ili '2' --- ");\r
+ Izb:= RdInt();\r
+ WrLn;\r
+ UNTIL (Izb = 1) OR (Izb = 2);\r
+ Domaca:= Izb = 1;\r
+ Izbaci(Rec, R, Domaca, Ok);\r
+ IF Ok THEN\r
+ WrStr('Izbrisano.')\r
+ ELSE\r
+ WrStr('Rec se nije ni nalazila u recniku.')\r
+ END;\r
+ Pauza; |\r
+ 'S': Sadrzaj(R);\r
+ Pauza|\r
+ ELSE ;\r
+ END;\r
+ UNTIL Izbor = 'Q';\r
+ Unisti(R);\r
+END RecnikTest.\r
diff --git a/Cas01/Prezentacija.ppt b/Cas01/Prezentacija.ppt
deleted file mode 100644 (file)
index 6ff7ded..0000000
Binary files a/Cas01/Prezentacija.ppt and /dev/null differ
index 6ff7ded..0000000
Binary files a/Cas01/Prezentacija.ppt and /dev/null differ
diff --git a/Cas01/RECNIKAT.DEF b/Cas01/RECNIKAT.DEF
--- a/Cas01/RECNIKAT.DEF
+++ /dev/null
@@ -1,42 +0,0 @@
-DEFINITION MODULE RecnikATP;\r
-\r
- CONST\r
- Broj = 11; (* Neki prost broj *)\r
- MaxDuzRec = 50;\r
- MaxTabela = Broj - 1;\r
-\r
- TYPE\r
- String = ARRAY [1 .. MaxDuzRec] OF CHAR;\r
- Lista = POINTER TO Element;\r
- Element = RECORD\r
- Veza, Prevod: Lista;\r
- Rec: String;\r
- END;\r
- Indeksi = [0 .. MaxTabela];\r
- Tabela = ARRAY Indeksi OF Lista;\r
- Recnik = RECORD\r
- BrojReci: CARDINAL;\r
- Domace, Strane: Tabela;\r
- END;\r
-\r
- PROCEDURE Inicijalizuj(VAR R: Recnik);\r
- PROCEDURE Unisti(VAR R: Recnik);\r
-\r
- PROCEDURE Ubaci(DomacaRec, StranaRec: String;\r
- VAR R: Recnik;\r
- VAR Duplikat: BOOLEAN);\r
-\r
- PROCEDURE Izbaci(Rec: String;\r
- VAR R: Recnik;\r
- Domaca: BOOLEAN;\r
- VAR Ok: BOOLEAN);\r
-\r
- PROCEDURE Prevedi(StranaNaDomacu: BOOLEAN;\r
- Rec: String;\r
- VAR Prevod: String;\r
- VAR R: Recnik;\r
- VAR Ok: BOOLEAN);\r
-\r
- PROCEDURE Sadrzaj(VAR R: Recnik);\r
-\r
-END RecnikATP.\r
diff --git a/Cas01/RECNIKAT.MOD b/Cas01/RECNIKAT.MOD
--- a/Cas01/RECNIKAT.MOD
+++ /dev/null
@@ -1,186 +0,0 @@
-IMPLEMENTATION MODULE RecnikATP;\r
-\r
- FROM IO IMPORT\r
- RdKey, WrStr, WrLn, WrCard;\r
- FROM SYSTEM IMPORT\r
- TSIZE;\r
- FROM Str IMPORT\r
- Compare;\r
- FROM Storage IMPORT\r
- ALLOCATE, DEALLOCATE;\r
-\r
- PROCEDURE Hash(Rec: String): Indeksi;\r
- VAR\r
- i, Zbir, Temp: CARDINAL;\r
- BEGIN\r
- Zbir:= 0;\r
- i:= 1;\r
- WHILE (i <= MaxDuzRec) AND (Rec[i] # CHR(0)) DO\r
- Temp:= (ORD(Rec[i]) * ORD(Rec[i])) MOD Broj;\r
- Zbir:= (Zbir + Temp) MOD Broj;\r
- INC(i);\r
- END;\r
- RETURN Zbir;\r
- END Hash;\r
-\r
- PROCEDURE Inicijalizuj(VAR R: Recnik);\r
- VAR\r
- i: Indeksi;\r
- BEGIN\r
- WITH R DO\r
- BrojReci:= 0;\r
- FOR i := 0 TO MaxTabela DO\r
- NEW(Domace[i]);\r
- Domace[i]^.Veza := Domace[i];\r
- NEW(Strane[i]);\r
- Strane[i]^.Veza := Strane[i]\r
- END;\r
- END;\r
- END Inicijalizuj;\r
-\r
- PROCEDURE Unisti(VAR R: Recnik);\r
- VAR\r
- i: Indeksi;\r
- Tekuci: Lista;\r
- BEGIN\r
- FOR i:= 0 TO MaxTabela DO\r
- WHILE R.Domace[i] # R.Domace[i]^.Veza DO\r
- Tekuci:= R.Domace[i]^.Veza;\r
- R.Domace[i]^.Veza:= Tekuci^.Veza;\r
- DISPOSE(Tekuci);\r
- END;\r
- DISPOSE(R.Domace[i]);\r
- WHILE R.Strane[i] # R.Strane[i]^.Veza DO\r
- Tekuci:= R.Strane[i]^.Veza;\r
- R.Strane[i]^.Veza:= Tekuci^.Veza;\r
- DISPOSE(Tekuci);\r
- END;\r
- DISPOSE(R.Strane[i]);\r
- END;\r
- END Unisti;\r
-\r
- PROCEDURE Nadji(VAR Rec: String;\r
- VAR Tab: Tabela;\r
- VAR Prethodni: Lista;\r
- VAR Nadjen: BOOLEAN);\r
- VAR\r
- Pozicija: Indeksi;\r
- BEGIN\r
- Pozicija:= Hash(Rec);\r
- Prethodni:= Tab[Pozicija];\r
- Prethodni^.Rec:= Rec;\r
- IF Prethodni^.Veza = Prethodni THEN\r
- Nadjen:= FALSE;\r
- ELSE\r
- WHILE Compare(Prethodni^.Veza^.Rec, Rec) # 0 DO\r
- Prethodni:= Prethodni^.Veza;\r
- END;\r
- Nadjen:= Prethodni^.Veza # Tab[Pozicija]\r
- END;\r
- END Nadji;\r
-\r
- PROCEDURE Ubaci(DomacaRec, StranaRec: String;\r
- VAR R: Recnik;\r
- VAR Duplikat: BOOLEAN);\r
- VAR\r
- NadjenDom, NadjenStr: BOOLEAN;\r
- PrethodniDom, PrethodniStr, PomDom, PomStr: Lista;\r
- BEGIN\r
-\r
- Nadji(DomacaRec, R.Domace, PrethodniDom, NadjenDom);\r
- Nadji(StranaRec, R.Strane, PrethodniStr, NadjenStr);\r
-\r
- IF NadjenDom OR NadjenStr THEN\r
- Duplikat:= TRUE;\r
- ELSE\r
-\r
- Duplikat := FALSE;\r
-\r
- NEW(PomDom);\r
- PomDom^.Rec:= DomacaRec;\r
- PomDom^.Veza:= PrethodniDom^.Veza;\r
- PrethodniDom^.Veza:= PomDom;\r
-\r
- NEW(PomStr);\r
- PomStr^.Rec:= StranaRec;\r
- PomStr^.Veza:= PrethodniStr^.Veza;\r
- PrethodniStr^.Veza:= PomStr;\r
-\r
- PomDom^.Prevod:= PomStr;\r
- PomStr^.Prevod:= PomDom;\r
-\r
- INC(R.BrojReci);\r
-\r
- END;\r
- END Ubaci;\r
-\r
- PROCEDURE Izbaci(Rec: String;\r
- VAR R: Recnik;\r
- Domaca: BOOLEAN;\r
- VAR Ok: BOOLEAN);\r
- VAR\r
- Prethodni, Prethodni2, Temp, Temp2: Lista;\r
- BEGIN\r
-\r
- IF Domaca THEN\r
- Nadji(Rec, R.Domace, Prethodni, Ok);\r
- ELSE\r
- Nadji(Rec, R.Strane, Prethodni, Ok);\r
- END;\r
-\r
- IF Ok THEN\r
-\r
- Temp:= Prethodni^.Veza;\r
- Prethodni^.Veza:= Temp^.Veza;\r
-\r
- Temp2:= Temp^.Prevod;\r
- Prethodni2:= Temp2^.Veza;\r
- WHILE Prethodni2^.Veza # Temp2 DO\r
- Prethodni2:= Prethodni2^.Veza;\r
- END;\r
- Prethodni2^.Veza:= Temp2^.Veza;\r
-\r
- DISPOSE(Temp);\r
- DISPOSE(Temp2);\r
-\r
- DEC(R.BrojReci);\r
- END;\r
- END Izbaci;\r
-\r
- PROCEDURE Prevedi(StranuNaDomacu: BOOLEAN;\r
- Rec: String;\r
- VAR Prevod: String;\r
- VAR R: Recnik;\r
- VAR Ok: BOOLEAN);\r
- VAR\r
- Prethodni: Lista;\r
- BEGIN\r
- IF StranuNaDomacu THEN\r
- Nadji(Rec, R.Strane, Prethodni, Ok);\r
- ELSE\r
- Nadji(Rec, R.Domace, Prethodni, Ok);\r
- END;\r
- IF Ok THEN\r
- Prevod:= Prethodni^.Veza^.Prevod^.Rec;\r
- END\r
- END Prevedi;\r
-\r
- PROCEDURE Sadrzaj(VAR R: Recnik);\r
- VAR\r
- i: Indeksi;\r
- Tekuci: Lista;\r
- BEGIN\r
- WrStr('Sadrzaj recnika:');\r
- FOR i:= 0 TO MaxTabela DO\r
- Tekuci:= R.Domace[i]^.Veza;\r
- WHILE Tekuci# R.Domace[i] DO\r
- WrLn;\r
- WrStr(Tekuci^.Rec);\r
- WrStr(' --------- ');\r
- WrStr(Tekuci^.Prevod^.Rec);\r
- Tekuci:= Tekuci^.Veza;\r
- END;\r
- END;\r
- END Sadrzaj;\r
-\r
-END RecnikATP.\r
diff --git a/Cas01/RECNIKTE.MOD b/Cas01/RECNIKTE.MOD
--- a/Cas01/RECNIKTE.MOD
+++ /dev/null
@@ -1,116 +0,0 @@
-MODULE RecnikTest;\r
-\r
- FROM RecnikATP IMPORT\r
- String, Recnik, Inicijalizuj, Ubaci, Izbaci, Sadrzaj, Prevedi, Unisti;\r
- FROM IO IMPORT\r
- WrLn, WrStr, RdStr, WrCard, RdKey, WrChar;\r
- FROM Window IMPORT\r
- Clear;\r
-\r
- VAR\r
- R: Recnik;\r
- Rec, Prevod: String;\r
- Izbor, Izb: CHAR;\r
- Ok, Duplikat, Domaca, StrNaDom: BOOLEAN;\r
-\r
- PROCEDURE Meni(VAR Izbor: CHAR);\r
- TYPE\r
- Slova = SET OF CHAR;\r
- VAR\r
- i: CARDINAL;\r
- BEGIN\r
- Clear;\r
- FOR i:= 1 TO 8 DO\r
- WrLn;\r
- END;\r
- WrStr(' P --- prevod reci'); WrLn;\r
- WrStr(' B --- broj reci u recniku'); WrLn;\r
- WrStr(' U --- ubacivanje nove reci i njenog prevoda u recnik'); WrLn;\r
- WrStr(' I --- izbacivanje reci i njenog prevoda iz recnika'); WrLn;\r
- WrStr(' S --- sekvencijalni prikaz recnika'); WrLn;\r
- WrStr(' Q --- kraj rada');\r
- REPEAT\r
- Izbor:= CAP(RdKey());\r
- UNTIL Izbor IN Slova {'P', 'B', 'U', 'I', 'S', 'Q'};\r
- Clear;\r
- END Meni;\r
-\r
- PROCEDURE Pauza;\r
- VAR\r
- Ch: CHAR;\r
- BEGIN\r
- Ch:= RdKey();\r
- END Pauza;\r
-\r
-BEGIN\r
- Inicijalizuj(R);\r
- REPEAT\r
- Meni(Izbor);\r
- CASE Izbor OF\r
- 'P': REPEAT\r
- WrStr('1) prevod strane reci'); WrLn;\r
- WrStr('2) prevod domace reci'); WrLn;\r
- WrLn;\r
- WrStr("Unesite '1' ili '2' --- ");\r
- Izb:= RdKey();\r
- WrChar(Izb); WrLn;\r
- UNTIL (Izb = '1') OR (Izb = '2');\r
- StrNaDom:= Izb = '1';\r
- IF StrNaDom THEN\r
- WrStr('Unesite stranu rec ---- ');\r
- RdStr(Rec);\r
- Prevedi(StrNaDom, Rec, Prevod, R, Ok);\r
- IF Ok THEN\r
- WrStr('Prevod ---------------- ');\r
- WrStr(Prevod);\r
- ELSE\r
- WrStr('Zadata rec se ne nalazi u recniku.');\r
- END;\r
- ELSE\r
- WrStr('Unesite domacu rec ---- ');\r
- RdStr(Rec);\r
- Prevedi(StrNaDom, Rec, Prevod, R, Ok);\r
- IF Ok THEN\r
- WrStr('Prevod ---------------- ');\r
- WrStr(Prevod);\r
- ELSE\r
- WrStr('Zadata rec se ne nalazi u recniku.');\r
- END;\r
- END;\r
- Pauza; |\r
- 'B': WrStr('Recnik raspolaze fondom od ');\r
- WrCard(R.BrojReci, 1);\r
- WrStr(' reci.');\r
- Pauza; |\r
- 'U': WrStr('Unesite novu domacu rec ----- ');\r
- RdStr(Rec);\r
- WrStr('Unesite njen prevod -------- ');\r
- RdStr(Prevod);\r
- Ubaci(Rec, Prevod, R, Duplikat);\r
- IF Duplikat THEN\r
- WrStr('U recniku se vec nalazi data rec.');\r
- ELSE\r
- WrStr('Upisano.');\r
- END;\r
- Pauza; |\r
- 'I': WrStr('Unesite rec --- ');\r
- RdStr(Rec);\r
- REPEAT\r
- WrStr('Da li je uneta rec domaca ili strana? (d/s) ');\r
- Izb:= RdKey();\r
- WrLn;\r
- UNTIL (CAP(Izb) = 'D') OR (CAP(Izb) = 'S');\r
- Domaca:= CAP(Izb) = 'D';\r
- Izbaci(Rec, R, Domaca, Ok);\r
- IF Ok THEN\r
- WrStr('Izbrisano.')\r
- ELSE\r
- WrStr('Rec se nije ni nalazila u recniku.')\r
- END;\r
- Pauza; |\r
- 'S': Sadrzaj(R);\r
- Pauza;\r
- END;\r
- UNTIL Izbor = 'Q';\r
- Unisti(R);\r
-END RecnikTest.\r