gitweb on Svarog

projekti pod git sistemom za održavanje verzija -- projects under the git version control system
Reorganizacija strukture foldera.
authorIvan Pribela <ivanpribela@gmail.com>
Sat, 16 Nov 2013 15:27:00 +0000 (16:27 +0100)
committerIvan Pribela <ivanpribela@gmail.com>
Sat, 16 Nov 2013 15:27:00 +0000 (16:27 +0100)
47 files changed:
00. Uvod/Prezentacija.ppt [new file with mode: 0644]
01. Dvosmerni Recnik/Prezentacija.ppt [deleted file]
01. Dvosmerni Recnik/TopSpeed/RECNIKAT.DEF [deleted file]
01. Dvosmerni Recnik/TopSpeed/RECNIKAT.MOD [deleted file]
01. Dvosmerni Recnik/TopSpeed/RECNIKTE.MOD [deleted file]
01. Dvosmerni Recnik/XDS/RECNIKATP.DEF [deleted file]
01. Dvosmerni Recnik/XDS/RECNIKATP.MOD [deleted file]
01. Dvosmerni Recnik/XDS/RECNIKTEST.MOD [deleted file]
01. Dvosmerni recnik/Prezentacija.ppt [new file with mode: 0644]
01. Dvosmerni recnik/TopSpeed/RECNIKAT.DEF [new file with mode: 0644]
01. Dvosmerni recnik/TopSpeed/RECNIKAT.MOD [new file with mode: 0644]
01. Dvosmerni recnik/TopSpeed/RECNIKTE.MOD [new file with mode: 0644]
01. Dvosmerni recnik/XDS/RECNIKATP.DEF [new file with mode: 0644]
01. Dvosmerni recnik/XDS/RECNIKATP.MOD [new file with mode: 0644]
01. Dvosmerni recnik/XDS/RECNIKTEST.MOD [new file with mode: 0644]
03. Shaker sort/TopSpeed & XDS/SHAKER.MOD [new file with mode: 0644]
03. Shaker sort/kod/SHAKER.MOD [deleted file]
04. Dve grupe brojeva/Prezentacija.ppt [new file with mode: 0644]
04. Dve grupe brojeva/TopSpeed & XDS/NBROJEVA.MOD [new file with mode: 0644]
04. N brojeva/Prezentacija.ppt [deleted file]
04. N brojeva/kod/NBROJEVA.MOD [deleted file]
05. NizDin/Prezentacija.ppt [deleted file]
05. NizDin/kod/NIZDIN.MOD [deleted file]
05. Podniz sa maksimalnim zbirom/Prezentacija.ppt [new file with mode: 0644]
05. Podniz sa maksimalnim zbirom/TopSpeed & XDS/NIZDIN.MOD [new file with mode: 0644]
06. Maksimalan zbir/Prezentacija.ppt [new file with mode: 0644]
06. Maksimalan zbir/TopSpeed/MAXZBIR.MOD [new file with mode: 0644]
07. Bojenje mape/Prezentacija.ppt [new file with mode: 0644]
07. Bojenje mape/TopSpeed/BOJENJE.MOD [new file with mode: 0644]
08. Trazenje puta/Prezentacija.ppt [new file with mode: 0644]
08. Trazenje puta/TopSpeed/Put.MOD [new file with mode: 0644]
09. Permutacije/Prezentacija.ppt [new file with mode: 0644]
09. Permutacije/TopSpeed/PERMP.MOD [new file with mode: 0644]
10. Obrnuti problem kraljica/Prezentacija.ppt [new file with mode: 0644]
10. Obrnuti problem kraljica/TopSpeed/QUEENS.MOD [new file with mode: 0644]
Cas07/MAXZBIR.MOD [deleted file]
Cas07/Prezentacija.ppt [deleted file]
Cas08/BOJENJE.MOD [deleted file]
Cas08/Prezentacija.ppt [deleted file]
Cas09/Prezentacija.ppt [deleted file]
Cas09/Put.MOD [deleted file]
Cas10/PERMP.MOD [deleted file]
Cas10/Prezentacija.ppt [deleted file]
Cas11/Prezentacija.ppt [deleted file]
Cas11/QUEENS.MOD [deleted file]
Cas11/RESENJE.TXT [deleted file]
Spisak.ppt [new file with mode: 0644]

diff --git a/00. Uvod/Prezentacija.ppt b/00. Uvod/Prezentacija.ppt
new file mode 100644 (file)
index 0000000..3aa1f02
Binary files /dev/null and b/00. Uvod/Prezentacija.ppt differ
diff --git a/01. Dvosmerni Recnik/Prezentacija.ppt b/01. Dvosmerni Recnik/Prezentacija.ppt
deleted file mode 100644 (file)
index 6ff7ded..0000000
Binary files a/01. Dvosmerni Recnik/Prezentacija.ppt and /dev/null differ
diff --git a/01. Dvosmerni Recnik/TopSpeed/RECNIKAT.DEF b/01. Dvosmerni Recnik/TopSpeed/RECNIKAT.DEF
deleted file mode 100644 (file)
index 92a237a..0000000
+++ /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/01. Dvosmerni Recnik/TopSpeed/RECNIKAT.MOD b/01. Dvosmerni Recnik/TopSpeed/RECNIKAT.MOD
deleted file mode 100644 (file)
index 1977893..0000000
+++ /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/01. Dvosmerni Recnik/TopSpeed/RECNIKTE.MOD b/01. Dvosmerni Recnik/TopSpeed/RECNIKTE.MOD
deleted file mode 100644 (file)
index 5358707..0000000
+++ /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
diff --git a/01. Dvosmerni Recnik/XDS/RECNIKATP.DEF b/01. Dvosmerni Recnik/XDS/RECNIKATP.DEF
deleted file mode 100644 (file)
index 92a237a..0000000
+++ /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/01. Dvosmerni Recnik/XDS/RECNIKATP.MOD b/01. Dvosmerni Recnik/XDS/RECNIKATP.MOD
deleted file mode 100644 (file)
index 1977893..0000000
+++ /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/01. Dvosmerni Recnik/XDS/RECNIKTEST.MOD b/01. Dvosmerni Recnik/XDS/RECNIKTEST.MOD
deleted file mode 100644 (file)
index e1b97a2..0000000
+++ /dev/null
@@ -1,141 +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, 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/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
diff --git a/01. Dvosmerni recnik/TopSpeed/RECNIKAT.DEF b/01. Dvosmerni recnik/TopSpeed/RECNIKAT.DEF
new file mode 100644 (file)
index 0000000..92a237a
--- /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
new file mode 100644 (file)
index 0000000..1977893
--- /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
new file mode 100644 (file)
index 0000000..5358707
--- /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
new file mode 100644 (file)
index 0000000..92a237a
--- /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
new file mode 100644 (file)
index 0000000..1977893
--- /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
new file mode 100644 (file)
index 0000000..e1b97a2
--- /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/03. Shaker sort/TopSpeed & XDS/SHAKER.MOD b/03. Shaker sort/TopSpeed & XDS/SHAKER.MOD
new file mode 100644 (file)
index 0000000..5f1ef39
--- /dev/null
@@ -0,0 +1,80 @@
+MODULE Shaker;\r
+\r
+  FROM IO IMPORT\r
+    WrCard, WrStr, RdCard, WrLn, OK;\r
+\r
+  CONST\r
+    Max = 10;\r
+\r
+  TYPE\r
+    Indeks = [1 .. Max];\r
+    NizTip = ARRAY Indeks OF CARDINAL;\r
+\r
+  VAR\r
+    Niz: NizTip;\r
+\r
+  PROCEDURE Unos(VAR Niz: NizTip);\r
+    VAR\r
+      i: Indeks;\r
+    BEGIN\r
+      FOR i:= 1 TO Max DO\r
+        REPEAT\r
+          WrStr('Unesite ');\r
+          WrCard(i, 2);\r
+          WrStr('. clan niza: ');\r
+          Niz[i]:= RdCard();\r
+          WrLn;\r
+        UNTIL OK;\r
+      END;\r
+    END Unos;\r
+\r
+  PROCEDURE Ispis(VAR Niz: NizTip);\r
+    VAR\r
+      i: Indeks;\r
+    BEGIN\r
+      FOR i := 1 TO Max - 1 DO\r
+        WrCard(Niz[i], 1);\r
+        WrStr(', ');\r
+      END;\r
+      WrCard(Niz[Max], 1);\r
+    END Ispis;\r
+\r
+  PROCEDURE ShakerSort(VAR Niz: NizTip);\r
+    VAR\r
+      Levi, Desni, i, ZadnjiMenjan: Indeks;\r
+      Temp: CARDINAL;\r
+    BEGIN\r
+      Levi:= 2;\r
+      Desni:= Max;\r
+      ZadnjiMenjan:= Max;\r
+      REPEAT\r
+        FOR i:= Desni TO Levi BY -1 DO\r
+          IF Niz[i - 1] > Niz[i] THEN\r
+            Temp:= Niz[i - 1];\r
+            Niz[i - 1]:= Niz[i];\r
+            Niz[i]:= Temp;\r
+            ZadnjiMenjan:= i;\r
+          END;\r
+        END;\r
+        Levi:= ZadnjiMenjan + 1;\r
+        FOR i:= Levi TO Desni DO\r
+          IF Niz[i - 1] > Niz[i] THEN\r
+            Temp:= Niz[i - 1];\r
+            Niz[i - 1]:= Niz[i];\r
+            Niz[i]:= Temp;\r
+            ZadnjiMenjan:= i;\r
+          END;\r
+        END;\r
+        Desni:= ZadnjiMenjan - 1;\r
+      UNTIL Levi > Desni;\r
+    END ShakerSort;\r
+\r
+BEGIN\r
+  Unos(Niz);\r
+  WrStr('Unesen niz:   ');\r
+  Ispis(Niz);\r
+  WrLn;\r
+  WrStr('Sortiran niz: ');\r
+  ShakerSort(Niz);\r
+  Ispis(Niz);\r
+END Shaker.\r
diff --git a/03. Shaker sort/kod/SHAKER.MOD b/03. Shaker sort/kod/SHAKER.MOD
deleted file mode 100644 (file)
index 5f1ef39..0000000
+++ /dev/null
@@ -1,80 +0,0 @@
-MODULE Shaker;\r
-\r
-  FROM IO IMPORT\r
-    WrCard, WrStr, RdCard, WrLn, OK;\r
-\r
-  CONST\r
-    Max = 10;\r
-\r
-  TYPE\r
-    Indeks = [1 .. Max];\r
-    NizTip = ARRAY Indeks OF CARDINAL;\r
-\r
-  VAR\r
-    Niz: NizTip;\r
-\r
-  PROCEDURE Unos(VAR Niz: NizTip);\r
-    VAR\r
-      i: Indeks;\r
-    BEGIN\r
-      FOR i:= 1 TO Max DO\r
-        REPEAT\r
-          WrStr('Unesite ');\r
-          WrCard(i, 2);\r
-          WrStr('. clan niza: ');\r
-          Niz[i]:= RdCard();\r
-          WrLn;\r
-        UNTIL OK;\r
-      END;\r
-    END Unos;\r
-\r
-  PROCEDURE Ispis(VAR Niz: NizTip);\r
-    VAR\r
-      i: Indeks;\r
-    BEGIN\r
-      FOR i := 1 TO Max - 1 DO\r
-        WrCard(Niz[i], 1);\r
-        WrStr(', ');\r
-      END;\r
-      WrCard(Niz[Max], 1);\r
-    END Ispis;\r
-\r
-  PROCEDURE ShakerSort(VAR Niz: NizTip);\r
-    VAR\r
-      Levi, Desni, i, ZadnjiMenjan: Indeks;\r
-      Temp: CARDINAL;\r
-    BEGIN\r
-      Levi:= 2;\r
-      Desni:= Max;\r
-      ZadnjiMenjan:= Max;\r
-      REPEAT\r
-        FOR i:= Desni TO Levi BY -1 DO\r
-          IF Niz[i - 1] > Niz[i] THEN\r
-            Temp:= Niz[i - 1];\r
-            Niz[i - 1]:= Niz[i];\r
-            Niz[i]:= Temp;\r
-            ZadnjiMenjan:= i;\r
-          END;\r
-        END;\r
-        Levi:= ZadnjiMenjan + 1;\r
-        FOR i:= Levi TO Desni DO\r
-          IF Niz[i - 1] > Niz[i] THEN\r
-            Temp:= Niz[i - 1];\r
-            Niz[i - 1]:= Niz[i];\r
-            Niz[i]:= Temp;\r
-            ZadnjiMenjan:= i;\r
-          END;\r
-        END;\r
-        Desni:= ZadnjiMenjan - 1;\r
-      UNTIL Levi > Desni;\r
-    END ShakerSort;\r
-\r
-BEGIN\r
-  Unos(Niz);\r
-  WrStr('Unesen niz:   ');\r
-  Ispis(Niz);\r
-  WrLn;\r
-  WrStr('Sortiran niz: ');\r
-  ShakerSort(Niz);\r
-  Ispis(Niz);\r
-END Shaker.\r
diff --git a/04. Dve grupe brojeva/Prezentacija.ppt b/04. Dve grupe brojeva/Prezentacija.ppt
new file mode 100644 (file)
index 0000000..a1b04ab
Binary files /dev/null and b/04. Dve grupe brojeva/Prezentacija.ppt differ
diff --git a/04. Dve grupe brojeva/TopSpeed & XDS/NBROJEVA.MOD b/04. Dve grupe brojeva/TopSpeed & XDS/NBROJEVA.MOD
new file mode 100644 (file)
index 0000000..9f15488
--- /dev/null
@@ -0,0 +1,112 @@
+MODULE NBrojeva;\r
+\r
+  FROM IO IMPORT\r
+    WrLn, WrCard, RdCard, WrStr;\r
+\r
+  CONST\r
+    MaxNiz = 50;\r
+    MaxSuma = 500;\r
+\r
+  VAR\r
+    n, Suma, SumaPola: CARDINAL;\r
+    Broj: ARRAY [1 .. MaxNiz] OF CARDINAL;\r
+    Iskor: ARRAY[1 .. MaxNiz] OF BOOLEAN;\r
+    Mat: ARRAY[0 .. MaxSuma], [0 .. MaxNiz] OF CARDINAL;\r
+   (*   Mat[i, j] je suma brojeva u resenju ako je maksimalna *)\r
+   (* dozvoljena suma brojeva u resenju jednaka 'i' i ako se  *)\r
+   (* koristi samo prvih 'j' brojeva.                         *)\r
+\r
+  PROCEDURE Unos;\r
+    VAR\r
+      i: CARDINAL;\r
+  BEGIN\r
+    WrStr('Unesite n: ');\r
+    n:= RdCard();\r
+    Suma:= 0;\r
+    FOR i:= 1 TO n DO\r
+      WrStr('Unesite ');\r
+      WrCard(i, 1);\r
+      WrStr('. broj: ');\r
+      Broj[i]:= RdCard();\r
+      Suma:= Suma + Broj[i];\r
+      Iskor[i]:= FALSE;\r
+    END;\r
+    SumaPola:= Suma DIV 2;\r
+  END Unos;\r
+\r
+  PROCEDURE Resi;\r
+    VAR\r
+      i, j, Pom: CARDINAL;\r
+  BEGIN\r
+    FOR i:= 0 TO SumaPola DO\r
+      Mat[i, 0]:= 0;  (* Koristi se prvih 0 brojeva *)\r
+    END;\r
+    FOR j:= 1 TO n DO\r
+      Mat[0, j]:= 0;  (* Maksimalna dozvoljena suma brojeva u resenju je 0 *)\r
+    END;\r
+    FOR i:= 1 TO SumaPola DO\r
+      (* Maks. dozvoljena suma brojeva u resenju je i *)\r
+      FOR j := 1 TO n DO\r
+        (* U resenju mogu ucestvovati prvih j brojeva *)\r
+        Mat[i, j]:= Mat[i, j - 1];\r
+        IF Broj[j] <= i THEN\r
+          Pom:= Mat[i - Broj[j], j - 1] + Broj[j];\r
+          IF Pom > Mat[i, j] THEN\r
+            Mat[i, j]:= Pom;\r
+          END;\r
+        END;\r
+      END;\r
+    END;\r
+  END Resi;\r
+\r
+  PROCEDURE IspisiPrvu;\r
+    VAR\r
+      i, j: CARDINAL;\r
+  BEGIN\r
+    WrStr('Zbir prve grupe brojeva je ');\r
+    WrCard(Mat[SumaPola, n], 1);\r
+    WrLn;\r
+    WrStr('Prvu grupu brojeva cine brojevi:');\r
+    WrLn;\r
+    i:= SumaPola;\r
+    j:= n;\r
+    REPEAT\r
+      WHILE (j > 0) AND (Mat[i, j] = Mat[i, j - 1]) DO\r
+        DEC(j);\r
+      END;\r
+      IF j > 0 THEN\r
+        WrCard(Broj[j], 8);\r
+        Iskor[j]:= TRUE;\r
+        i:= i - Broj[j];\r
+        DEC(j);\r
+      END;\r
+    UNTIL j = 0;\r
+  END IspisiPrvu;\r
+\r
+  PROCEDURE IspisiDrugu;\r
+    VAR\r
+      i, j: CARDINAL;\r
+  BEGIN\r
+    WrLn;\r
+    WrStr('Zbir druge grupe brojeva je ');\r
+    WrCard(Suma - Mat[SumaPola, n], 1);\r
+    WrLn;\r
+    WrStr('Drugu grupu brojeva cine brojevi:');\r
+    WrLn;\r
+    FOR i := 1 TO n DO\r
+      IF NOT Iskor[i] THEN\r
+        WrCard(Broj[i], 8);\r
+      END;\r
+    END;\r
+  END IspisiDrugu;\r
+\r
+BEGIN\r
+  Unos;\r
+  IF SumaPola > MaxSuma THEN\r
+    WrStr('Ulazni podaci su suvise veliki.');\r
+  ELSE\r
+    Resi;\r
+    IspisiPrvu;\r
+    IspisiDrugu;\r
+  END;\r
+END NBrojeva.\r
diff --git a/04. N brojeva/Prezentacija.ppt b/04. N brojeva/Prezentacija.ppt
deleted file mode 100644 (file)
index a1b04ab..0000000
Binary files a/04. N brojeva/Prezentacija.ppt and /dev/null differ
diff --git a/04. N brojeva/kod/NBROJEVA.MOD b/04. N brojeva/kod/NBROJEVA.MOD
deleted file mode 100644 (file)
index 9f15488..0000000
+++ /dev/null
@@ -1,112 +0,0 @@
-MODULE NBrojeva;\r
-\r
-  FROM IO IMPORT\r
-    WrLn, WrCard, RdCard, WrStr;\r
-\r
-  CONST\r
-    MaxNiz = 50;\r
-    MaxSuma = 500;\r
-\r
-  VAR\r
-    n, Suma, SumaPola: CARDINAL;\r
-    Broj: ARRAY [1 .. MaxNiz] OF CARDINAL;\r
-    Iskor: ARRAY[1 .. MaxNiz] OF BOOLEAN;\r
-    Mat: ARRAY[0 .. MaxSuma], [0 .. MaxNiz] OF CARDINAL;\r
-   (*   Mat[i, j] je suma brojeva u resenju ako je maksimalna *)\r
-   (* dozvoljena suma brojeva u resenju jednaka 'i' i ako se  *)\r
-   (* koristi samo prvih 'j' brojeva.                         *)\r
-\r
-  PROCEDURE Unos;\r
-    VAR\r
-      i: CARDINAL;\r
-  BEGIN\r
-    WrStr('Unesite n: ');\r
-    n:= RdCard();\r
-    Suma:= 0;\r
-    FOR i:= 1 TO n DO\r
-      WrStr('Unesite ');\r
-      WrCard(i, 1);\r
-      WrStr('. broj: ');\r
-      Broj[i]:= RdCard();\r
-      Suma:= Suma + Broj[i];\r
-      Iskor[i]:= FALSE;\r
-    END;\r
-    SumaPola:= Suma DIV 2;\r
-  END Unos;\r
-\r
-  PROCEDURE Resi;\r
-    VAR\r
-      i, j, Pom: CARDINAL;\r
-  BEGIN\r
-    FOR i:= 0 TO SumaPola DO\r
-      Mat[i, 0]:= 0;  (* Koristi se prvih 0 brojeva *)\r
-    END;\r
-    FOR j:= 1 TO n DO\r
-      Mat[0, j]:= 0;  (* Maksimalna dozvoljena suma brojeva u resenju je 0 *)\r
-    END;\r
-    FOR i:= 1 TO SumaPola DO\r
-      (* Maks. dozvoljena suma brojeva u resenju je i *)\r
-      FOR j := 1 TO n DO\r
-        (* U resenju mogu ucestvovati prvih j brojeva *)\r
-        Mat[i, j]:= Mat[i, j - 1];\r
-        IF Broj[j] <= i THEN\r
-          Pom:= Mat[i - Broj[j], j - 1] + Broj[j];\r
-          IF Pom > Mat[i, j] THEN\r
-            Mat[i, j]:= Pom;\r
-          END;\r
-        END;\r
-      END;\r
-    END;\r
-  END Resi;\r
-\r
-  PROCEDURE IspisiPrvu;\r
-    VAR\r
-      i, j: CARDINAL;\r
-  BEGIN\r
-    WrStr('Zbir prve grupe brojeva je ');\r
-    WrCard(Mat[SumaPola, n], 1);\r
-    WrLn;\r
-    WrStr('Prvu grupu brojeva cine brojevi:');\r
-    WrLn;\r
-    i:= SumaPola;\r
-    j:= n;\r
-    REPEAT\r
-      WHILE (j > 0) AND (Mat[i, j] = Mat[i, j - 1]) DO\r
-        DEC(j);\r
-      END;\r
-      IF j > 0 THEN\r
-        WrCard(Broj[j], 8);\r
-        Iskor[j]:= TRUE;\r
-        i:= i - Broj[j];\r
-        DEC(j);\r
-      END;\r
-    UNTIL j = 0;\r
-  END IspisiPrvu;\r
-\r
-  PROCEDURE IspisiDrugu;\r
-    VAR\r
-      i, j: CARDINAL;\r
-  BEGIN\r
-    WrLn;\r
-    WrStr('Zbir druge grupe brojeva je ');\r
-    WrCard(Suma - Mat[SumaPola, n], 1);\r
-    WrLn;\r
-    WrStr('Drugu grupu brojeva cine brojevi:');\r
-    WrLn;\r
-    FOR i := 1 TO n DO\r
-      IF NOT Iskor[i] THEN\r
-        WrCard(Broj[i], 8);\r
-      END;\r
-    END;\r
-  END IspisiDrugu;\r
-\r
-BEGIN\r
-  Unos;\r
-  IF SumaPola > MaxSuma THEN\r
-    WrStr('Ulazni podaci su suvise veliki.');\r
-  ELSE\r
-    Resi;\r
-    IspisiPrvu;\r
-    IspisiDrugu;\r
-  END;\r
-END NBrojeva.\r
diff --git a/05. NizDin/Prezentacija.ppt b/05. NizDin/Prezentacija.ppt
deleted file mode 100644 (file)
index c0ab24e..0000000
Binary files a/05. NizDin/Prezentacija.ppt and /dev/null differ
diff --git a/05. NizDin/kod/NIZDIN.MOD b/05. NizDin/kod/NIZDIN.MOD
deleted file mode 100644 (file)
index 0e63683..0000000
+++ /dev/null
@@ -1,65 +0,0 @@
-MODULE NizDin;\r
-\r
-  FROM IO IMPORT\r
-    WrStr, RdInt, WrInt;\r
-\r
-  CONST\r
-    MaxN = 1000;\r
-\r
-  VAR\r
-    a, b: ARRAY [0 .. MaxN] OF INTEGER;\r
-    (* b[i] je suma elemenata u resenju za *)\r
-    (* deo niza 'a' do 'i'-tog elementa    *)\r
-    n: INTEGER;\r
-\r
-  PROCEDURE Unos;\r
-    VAR\r
-      i: INTEGER;\r
-  BEGIN\r
-    WrStr('Unesite N: ');\r
-    n:= RdInt();\r
-    FOR i:= 1 TO n DO\r
-      WrStr('A[');\r
-      WrInt(i, 1);\r
-      WrStr('] = ');\r
-      a[i]:= RdInt();\r
-    END;\r
-  END Unos;\r
-  \r
-  PROCEDURE Resi;\r
-    VAR\r
-      i: INTEGER;\r
-  BEGIN\r
-    b[0]:= 0;\r
-    IF a[1] > 0 THEN\r
-      b[1]:= a[1];\r
-    ELSE\r
-      b[1]:= 0;\r
-    END;\r
-    FOR i:= 2 TO n DO\r
-      IF b[i - 2] + a[i] > b[i - 1] THEN\r
-        b[i]:= b[i - 2] + a[i];\r
-      ELSE\r
-        b[i]:= b[i - 1];\r
-      END\r
-    END;\r
-  END Resi;\r
-\r
-  PROCEDURE Ispis(n: INTEGER);\r
-  BEGIN\r
-    IF n > 0 THEN\r
-      IF b[n] = b[n - 1] THEN\r
-        Ispis(n - 1);\r
-      ELSE\r
-        Ispis(n - 2);\r
-        WrInt(a[n], 8);\r
-      END;\r
-    END;\r
-  END Ispis;\r
-\r
-BEGIN\r
-  Unos;\r
-  Resi;\r
-  WrStr('Podniz: ');\r
-  Ispis(n);\r
-END NizDin.\r
diff --git a/05. Podniz sa maksimalnim zbirom/Prezentacija.ppt b/05. Podniz sa maksimalnim zbirom/Prezentacija.ppt
new file mode 100644 (file)
index 0000000..c0ab24e
Binary files /dev/null and b/05. Podniz sa maksimalnim zbirom/Prezentacija.ppt differ
diff --git a/05. Podniz sa maksimalnim zbirom/TopSpeed & XDS/NIZDIN.MOD b/05. Podniz sa maksimalnim zbirom/TopSpeed & XDS/NIZDIN.MOD
new file mode 100644 (file)
index 0000000..0e63683
--- /dev/null
@@ -0,0 +1,65 @@
+MODULE NizDin;\r
+\r
+  FROM IO IMPORT\r
+    WrStr, RdInt, WrInt;\r
+\r
+  CONST\r
+    MaxN = 1000;\r
+\r
+  VAR\r
+    a, b: ARRAY [0 .. MaxN] OF INTEGER;\r
+    (* b[i] je suma elemenata u resenju za *)\r
+    (* deo niza 'a' do 'i'-tog elementa    *)\r
+    n: INTEGER;\r
+\r
+  PROCEDURE Unos;\r
+    VAR\r
+      i: INTEGER;\r
+  BEGIN\r
+    WrStr('Unesite N: ');\r
+    n:= RdInt();\r
+    FOR i:= 1 TO n DO\r
+      WrStr('A[');\r
+      WrInt(i, 1);\r
+      WrStr('] = ');\r
+      a[i]:= RdInt();\r
+    END;\r
+  END Unos;\r
+  \r
+  PROCEDURE Resi;\r
+    VAR\r
+      i: INTEGER;\r
+  BEGIN\r
+    b[0]:= 0;\r
+    IF a[1] > 0 THEN\r
+      b[1]:= a[1];\r
+    ELSE\r
+      b[1]:= 0;\r
+    END;\r
+    FOR i:= 2 TO n DO\r
+      IF b[i - 2] + a[i] > b[i - 1] THEN\r
+        b[i]:= b[i - 2] + a[i];\r
+      ELSE\r
+        b[i]:= b[i - 1];\r
+      END\r
+    END;\r
+  END Resi;\r
+\r
+  PROCEDURE Ispis(n: INTEGER);\r
+  BEGIN\r
+    IF n > 0 THEN\r
+      IF b[n] = b[n - 1] THEN\r
+        Ispis(n - 1);\r
+      ELSE\r
+        Ispis(n - 2);\r
+        WrInt(a[n], 8);\r
+      END;\r
+    END;\r
+  END Ispis;\r
+\r
+BEGIN\r
+  Unos;\r
+  Resi;\r
+  WrStr('Podniz: ');\r
+  Ispis(n);\r
+END NizDin.\r
diff --git a/06. Maksimalan zbir/Prezentacija.ppt b/06. Maksimalan zbir/Prezentacija.ppt
new file mode 100644 (file)
index 0000000..d5ec6a7
Binary files /dev/null and b/06. Maksimalan zbir/Prezentacija.ppt differ
diff --git a/06. Maksimalan zbir/TopSpeed/MAXZBIR.MOD b/06. Maksimalan zbir/TopSpeed/MAXZBIR.MOD
new file mode 100644 (file)
index 0000000..85e8209
--- /dev/null
@@ -0,0 +1,100 @@
+MODULE MaxZbir;\r
+\r
+  FROM IO IMPORT\r
+    WrStr, WrLn, WrCard, WrInt, RdCard, RdInt;\r
+\r
+  CONST\r
+    Max = 100;\r
+\r
+  VAR\r
+    A, B: ARRAY [1 .. Max], [1 .. Max] OF INTEGER;\r
+    m, n: CARDINAL;\r
+    (* B[vr, ko] je vrednost optimalnog resenja od (1, 1) do (vr, ko) *)\r
+\r
+  PROCEDURE Unos;\r
+    VAR\r
+      i, j: CARDINAL;\r
+  BEGIN\r
+    WrStr('Unesite n: ');\r
+    n:= RdCard();\r
+    WrStr('Unesite m: ');\r
+    m:= RdCard();\r
+    IF (n < Max) AND (m < Max) THEN\r
+      FOR i:= 1 TO m DO\r
+        FOR j:= 1 TO n DO\r
+          WrStr('A[');\r
+          WrCard(i, 1);\r
+          WrStr(', ');\r
+          WrCard(j, 1);\r
+          WrStr('] = ');\r
+          A[i, j] := RdInt();\r
+        END;\r
+      END;\r
+    END;\r
+  END Unos;\r
+\r
+  PROCEDURE Resi;\r
+    VAR\r
+      i, j: CARDINAL;\r
+  BEGIN\r
+    B[1, 1]:= A[1, 1];\r
+    FOR j:= 2 TO n DO\r
+      B[1, j]:= A[1, j] + B[1, j-1];\r
+    END;\r
+    FOR i:= 2 TO m DO\r
+      B[i, 1]:= A[i, 1] + B[i-1, 1];\r
+    END;\r
+    FOR i:= 2 TO m DO\r
+      FOR j:= 2 TO n DO\r
+        IF B[i, j - 1] < B[i - 1, j] THEN\r
+          B[i, j]:= A[i, j] + B[i - 1, j];\r
+        ELSE\r
+          B[i, j]:= A[i, j] + B[i, j - 1];\r
+        END;\r
+      END;\r
+    END;\r
+  END Resi;\r
+\r
+  PROCEDURE Ispis(Vr, Ko: CARDINAL);\r
+    VAR\r
+      i: CARDINAL;\r
+  BEGIN\r
+    IF (Vr > 1) AND (Ko > 1) THEN\r
+      IF B[Vr - 1, Ko] > B[Vr, Ko - 1] THEN\r
+        Ispis(Vr - 1, Ko);\r
+      ELSE\r
+        Ispis(Vr, Ko - 1);\r
+      END;\r
+      WrStr('(');\r
+      WrCard(Vr, 1);\r
+      WrStr(', ');\r
+      WrCard(Ko, 1);\r
+      WrStr(')');\r
+    ELSIF Vr = 1 THEN\r
+      FOR i:= 1 TO Ko DO\r
+        WrStr('(1, ');\r
+        WrCard(i, 1);\r
+        WrStr(')');\r
+      END;\r
+    ELSE\r
+      FOR i:= 1 TO Vr DO\r
+        WrStr('(');\r
+        WrCard(i, 1);\r
+        WrStr(', 1)');\r
+      END;\r
+    END;\r
+  END Ispis;\r
+\r
+BEGIN\r
+  Unos;\r
+  IF (n < Max) AND (m < Max) THEN\r
+    Resi;\r
+    WrStr('Maksimalni zbir je ');\r
+    WrInt(B[m, n], 1);\r
+    WrStr(' a postize se ovako:');\r
+    WrLn;\r
+    Ispis(m, n)\r
+  ELSE\r
+    WrStr('Suvise velika matrica.')\r
+  END\r
+END MaxZbir.\r
diff --git a/07. Bojenje mape/Prezentacija.ppt b/07. Bojenje mape/Prezentacija.ppt
new file mode 100644 (file)
index 0000000..73a6b8b
Binary files /dev/null and b/07. Bojenje mape/Prezentacija.ppt differ
diff --git a/07. Bojenje mape/TopSpeed/BOJENJE.MOD b/07. Bojenje mape/TopSpeed/BOJENJE.MOD
new file mode 100644 (file)
index 0000000..6986a33
--- /dev/null
@@ -0,0 +1,128 @@
+MODULE Bojenje;\r
+\r
+  FROM IO IMPORT\r
+    WrStr, WrLn, WrLngCard;\r
+\r
+  CONST\r
+    MaxBrojZemalja = 30;\r
+    DuzinaImena = 18;\r
+\r
+  TYPE\r
+    RangImena = [1 .. DuzinaImena];\r
+    Zemlja = [1 .. MaxBrojZemalja];\r
+    SkupZ = SET OF Zemlja;\r
+    Boja = (Crvena, Plava, Zelena, Zuta);\r
+    GraniceTip = ARRAY Zemlja OF SkupZ;\r
+    BojeZemalja = ARRAY Boja OF SkupZ;\r
+    ImenaZemalja = ARRAY Zemlja, RangImena OF CHAR;\r
+\r
+  VAR\r
+    Granice: GraniceTip;\r
+    Obojeno: BojeZemalja;\r
+    Ime: ImenaZemalja;\r
+    BrZ: Zemlja;\r
+    RBr: LONGCARD;\r
+\r
+  PROCEDURE Inicijalizacija;\r
+    VAR\r
+      i: Boja;\r
+  BEGIN\r
+    FOR i:= MIN(Boja) TO MAX(Boja) DO\r
+      Obojeno[i]:= SkupZ {};\r
+    END;\r
+    Ime[ 1]:= 'Maroko';\r
+    Ime[ 2]:= 'Zapadna Sahara';\r
+    Ime[ 3]:= 'Alzir';\r
+    Ime[ 4]:= 'Tunis';\r
+    Ime[ 5]:= 'Mauritanija';\r
+    Ime[ 6]:= 'Mali';\r
+    Ime[ 7]:= 'Niger';\r
+    Ime[ 8]:= 'Libija';\r
+    Ime[ 9]:= 'Senegal';\r
+    Ime[10]:= 'Gvineja';\r
+    Ime[11]:= 'Obala Slonovace';\r
+    Ime[12]:= 'Burkina Faso';\r
+    Ime[13]:= 'Benin';\r
+    Ime[14]:= 'Nigerija';\r
+    Ime[15]:= 'Cad';\r
+    Ime[16]:= 'Sudan';\r
+    Ime[17]:= 'Egipat';\r
+    Ime[18]:= 'Gambija';\r
+    Ime[19]:= 'Gvineja Bisao';\r
+    Ime[20]:= 'Siera Leone';\r
+    Granice[ 1]:= SkupZ {3, 2};\r
+    Granice[ 2]:= SkupZ {1, 3, 5};\r
+    Granice[ 3]:= SkupZ {1, 2, 5, 6, 7, 8, 4};\r
+    Granice[ 4]:= SkupZ {3, 8};\r
+    Granice[ 5]:= SkupZ {2, 3, 6, 9};\r
+    Granice[ 6]:= SkupZ {3, 5, 9, 10, 11, 12, 7};\r
+    Granice[ 7]:= SkupZ {3, 6, 12, 13, 14, 15, 8};\r
+    Granice[ 8]:= SkupZ {4, 3, 7, 15, 16, 17};\r
+    Granice[ 9]:= SkupZ {18, 19, 10, 6, 5};\r
+    Granice[10]:= SkupZ {19, 9, 6, 20, 11};\r
+    Granice[11]:= SkupZ {10, 6, 12};\r
+    Granice[12]:= SkupZ {6, 11, 13, 7};\r
+    Granice[13]:= SkupZ {12, 7, 14};\r
+    Granice[14]:= SkupZ {13, 7, 15};\r
+    Granice[15]:= SkupZ {14, 7, 8, 16};\r
+    Granice[16]:= SkupZ {17, 8, 15};\r
+    Granice[17]:= SkupZ {8, 15, 16};\r
+    Granice[18]:= SkupZ {9};\r
+    Granice[19]:= SkupZ {9, 10};\r
+    Granice[20]:= SkupZ {10};\r
+    RBr:= 0;\r
+    BrZ:= 20\r
+  END Inicijalizacija;\r
+\r
+  PROCEDURE StampajSkup(VAR S: SkupZ);\r
+    VAR\r
+      z: Zemlja;\r
+      Prvi: BOOLEAN;\r
+  BEGIN\r
+    Prvi:= TRUE;\r
+    FOR z:= 1 TO MaxBrojZemalja DO\r
+      IF z IN S THEN\r
+        IF Prvi THEN\r
+          WrStr(Ime[z]);\r
+          Prvi:= FALSE;\r
+        ELSE\r
+          WrStr(', ');\r
+          WrStr(Ime[z]);\r
+        END;\r
+      END;\r
+    END;\r
+  END StampajSkup;\r
+\r
+\r
+  PROCEDURE Stampa(RBr: LONGCARD; VAR Obojeno: BojeZemalja);\r
+  BEGIN\r
+    WrLn; WrLn; WrLngCard(RBr, 1);\r
+    WrLn; WrStr('Crvena: '); StampajSkup(Obojeno[Crvena]);\r
+    WrLn; WrStr('Plava:  '); StampajSkup(Obojeno[Plava]);\r
+    WrLn; WrStr('Zelena: '); StampajSkup(Obojeno[Zelena]);\r
+    WrLn; WrStr('Zuta:   '); StampajSkup(Obojeno[Zuta]);\r
+  END Stampa;\r
+\r
+  PROCEDURE Oboji(z: Zemlja);\r
+    VAR\r
+      i: Boja;\r
+  BEGIN\r
+    FOR i:= MIN(Boja) TO MAX(Boja) DO\r
+      IF Granice[z] * Obojeno[i] = SkupZ {} THEN\r
+        Obojeno[i]:= Obojeno[i] + SkupZ {z};\r
+        IF z = BrZ THEN\r
+          INC(RBr);\r
+          Stampa(RBr, Obojeno);\r
+        ELSE\r
+          Oboji(z + 1);\r
+        END;\r
+        Obojeno[i]:= Obojeno[i] - SkupZ {z};\r
+      END;\r
+    END;\r
+  END Oboji;\r
+\r
+BEGIN\r
+  Inicijalizacija;\r
+  Oboji(1);\r
+  (* Broj mogucih bojenja je 1 527 552 *)\r
+END Bojenje.\r
diff --git a/08. Trazenje puta/Prezentacija.ppt b/08. Trazenje puta/Prezentacija.ppt
new file mode 100644 (file)
index 0000000..2c77cf5
Binary files /dev/null and b/08. Trazenje puta/Prezentacija.ppt differ
diff --git a/08. Trazenje puta/TopSpeed/Put.MOD b/08. Trazenje puta/TopSpeed/Put.MOD
new file mode 100644 (file)
index 0000000..2b93a80
--- /dev/null
@@ -0,0 +1,143 @@
+MODULE Put;\r
+\r
+  FROM IO IMPORT\r
+    WrLn, WrStr, RdCard, WrCard, OK;\r
+\r
+  FROM Storage IMPORT\r
+    ALLOCATE;\r
+\r
+  CONST\r
+    MaxBrGrad = 50;\r
+\r
+  TYPE\r
+    Lista = POINTER TO Grad;\r
+    Grad = RECORD\r
+             Info: CARDINAL;\r
+             Veza: Lista;\r
+           END;\r
+    Mreza = ARRAY  [1 .. MaxBrGrad] OF Lista;\r
+    Posecen = ARRAY [1 .. MaxBrGrad] OF BOOLEAN;\r
+\r
+  VAR\r
+    m: Mreza;\r
+    BrojGr: CARDINAL;\r
+    GPoc, GKra: CARDINAL;\r
+\r
+  PROCEDURE Ubaci(VAR L: Lista; G: CARDINAL);\r
+    VAR\r
+      Tek, Novi: Lista;\r
+  BEGIN\r
+    IF (L = NIL) OR (G < L^.Info) THEN\r
+      NEW(Novi);\r
+      Novi^.Info:= G;\r
+      Novi^.Veza:= L;\r
+      L:= Novi;\r
+    ELSE\r
+      Tek:= L;\r
+      WHILE (Tek^.Veza # NIL) AND (Tek^.Veza^.Info < G) DO\r
+        Tek:= Tek^.Veza;\r
+      END;\r
+      IF (Tek^.Veza = NIL) OR (Tek^.Veza^.Info > G) THEN\r
+        NEW(Novi);\r
+        Novi^.Info:= G;\r
+        Novi^.Veza:= Tek^.Veza;\r
+        Tek^.Veza:= Novi;\r
+      END;\r
+    END;\r
+  END Ubaci;\r
+\r
+  PROCEDURE Povezi(G1, G2: CARDINAL);\r
+  BEGIN\r
+    Ubaci(m[G1], G2);\r
+    Ubaci(m[G2], G1);\r
+  END Povezi;\r
+\r
+  PROCEDURE Unos(VAR G1, G2: CARDINAL);\r
+    VAR\r
+      G: CARDINAL;\r
+  BEGIN\r
+    REPEAT\r
+      WrStr('Unesite broj gradova (od 2 do ');\r
+      WrCard(MaxBrGrad, 1);\r
+      WrStr(') ---- ');\r
+      BrojGr:= RdCard();\r
+      WrLn;\r
+    UNTIL OK AND (2 <= BrojGr) AND (BrojGr <= MaxBrGrad);\r
+    FOR G:= 1 TO BrojGr DO\r
+      m[G]:= NIL;\r
+    END;\r
+    REPEAT\r
+      WrStr('Unesite dva grada koji su povezani linijom.');\r
+      REPEAT\r
+        WrLn;\r
+        WrStr('Unesite red. br. prvog grada (ili 0 za kraj unosa linija) -- ');\r
+        G1:= RdCard()\r
+      UNTIL OK AND (G1 <= BrojGr);\r
+      IF G1 > 0 THEN\r
+        REPEAT\r
+          WrStr('Unesite red. br. drugog grada ------------------------------ ');\r
+          G2:= RdCard();\r
+        UNTIL OK AND (1 <= G2) AND (G2 <= BrojGr) AND (G1 # G2);\r
+        Povezi(G1, G2);\r
+      END;\r
+      WrLn;\r
+    UNTIL G1 = 0;\r
+    REPEAT\r
+      WrLn;\r
+      WrLn;\r
+      WrStr('Unesite red. br. pocetnog grada -- ');\r
+      G1:= RdCard();\r
+    UNTIL OK AND (1 <= G1) AND (G1 <= BrojGr);\r
+    REPEAT\r
+      WrLn;\r
+      WrStr('Unesite red. br ciljnog grada -- ');\r
+      G2:= RdCard();\r
+    UNTIL OK AND (1 <= G2) AND (G2 <= BrojGr) AND (G1 # G2);\r
+  END Unos;\r
+\r
+  PROCEDURE NadjiPut(Od, Do, brojGr : CARDINAL);\r
+    VAR\r
+     Pos: Posecen;\r
+     Reseno: BOOLEAN;\r
+     i: CARDINAL;\r
+     Resenje: ARRAY [1 .. MaxBrGrad] OF CARDINAL;\r
+\r
+    PROCEDURE Pokusaj(Od, Br: CARDINAL; VAR Reseno: BOOLEAN);\r
+      VAR\r
+        Pok: Lista;\r
+    BEGIN\r
+      Pos[Od]:= TRUE;\r
+      Resenje[Br]:= Od;\r
+      IF Od = Do THEN\r
+        Reseno:= TRUE;\r
+        WrLn;\r
+        WrStr('Put koji treba precji je sledeci:');\r
+        WrLn;\r
+        FOR i:= 1 TO Br DO\r
+          WrCard(Resenje[i], 4);\r
+        END;\r
+      ELSE\r
+        Pok:= m[Od];\r
+        WHILE (Pok # NIL) AND NOT Reseno DO\r
+          WHILE (Pok # NIL) AND Pos[Pok^.Info]  DO\r
+            Pok:= Pok^.Veza;\r
+          END;\r
+          IF Pok # NIL THEN\r
+            Pokusaj(Pok^.Info, Br + 1, Reseno);\r
+          END;\r
+        END;\r
+      END;\r
+    END Pokusaj;\r
+\r
+  BEGIN\r
+    Reseno:= FALSE;\r
+    FOR i:= 1 TO BrojGr DO\r
+      Pos[i]:= FALSE;\r
+    END;\r
+    Pokusaj(Od, 1, Reseno);\r
+  END NadjiPut;\r
+\r
+BEGIN\r
+  Unos(GPoc, GKra);\r
+  NadjiPut(GPoc, GKra, BrojGr);\r
+END Put.\r
diff --git a/09. Permutacije/Prezentacija.ppt b/09. Permutacije/Prezentacija.ppt
new file mode 100644 (file)
index 0000000..7097444
Binary files /dev/null and b/09. Permutacije/Prezentacija.ppt differ
diff --git a/09. Permutacije/TopSpeed/PERMP.MOD b/09. Permutacije/TopSpeed/PERMP.MOD
new file mode 100644 (file)
index 0000000..b72c076
--- /dev/null
@@ -0,0 +1,92 @@
+MODULE PermP;\r
+\r
+FROM IO IMPORT\r
+  WrStr, WrLn, WrCard, RdCard, WrChar, RdKey, OK;\r
+\r
+CONST\r
+  MaxDim = 50;\r
+\r
+TYPE\r
+  Niz = ARRAY [1 .. MaxDim] OF CHAR;\r
+\r
+VAR\r
+  A: Niz;\r
+  n: CARDINAL;\r
+\r
+PROCEDURE Unos(VAR n: CARDINAL; VAR A: Niz);\r
+VAR\r
+  i: CARDINAL;\r
+BEGIN\r
+  REPEAT\r
+    WrStr('Unesite n (1 <= n <= ');\r
+    WrCard(MaxDim, 1);\r
+    WrStr(') --- ');\r
+    n:= RdCard();\r
+    WrLn;\r
+  UNTIL OK AND (1 <= n) AND (n <= MaxDim);\r
+  REPEAT\r
+    WrLn;\r
+    WrStr('Unesite ');\r
+    WrCard(n, 1);\r
+    WrStr(' slova koja treba permutovati (mogu se i ponavljati):');\r
+    WrLn;\r
+    WrLn;\r
+    i:= 0;\r
+    REPEAT\r
+      INC(i);\r
+      A[i]:= RdKey();\r
+      WrChar(A[i])\r
+    UNTIL (i = n) OR ((CAP(A[i]) < 'A') AND (CAP(A[i]) > 'Z')\r
+                       AND (A[i] < '0') AND (A[i] > '9'));\r
+  UNTIL NOT ((CAP(A[i]) < 'A') AND (CAP(A[i]) > 'Z') AND\r
+             (A[i] < '0') AND (A[i] > '9'));\r
+END Unos;\r
+\r
+PROCEDURE Permutacije(n: CARDINAL; VAR A: Niz);\r
+\r
+  PROCEDURE Nadji(k: CARDINAL);\r
+  VAR\r
+    i, j: CARDINAL;\r
+    Temp: CHAR;\r
+  BEGIN\r
+    IF k = 1 THEN\r
+      FOR i:= 1 TO n DO\r
+        WrChar(A[i]);\r
+      END;\r
+      WrLn;\r
+    ELSE\r
+      Nadji(k - 1);\r
+      FOR i:= 1 TO k - 1 DO\r
+        IF A[k] # A[i] THEN\r
+          (* Zamenimo elemente samo ako su razliciti *)\r
+          j:= 1;\r
+          WHILE (j < i) AND (A[j] # A[i]) DO\r
+            INC(j);\r
+          END;\r
+          IF j = i THEN\r
+            (* A[i] nema duplikata u skupu {a[1], ... , a[i-1] *)\r
+            Temp:= A[i];\r
+            A[i]:= A[k];\r
+            A[k]:= Temp;\r
+            Nadji(k - 1);\r
+            Temp:= A[i];\r
+            A[i]:= A[k];\r
+            A[k]:= Temp;\r
+          END;\r
+        END;\r
+      END;\r
+    END;\r
+  END Nadji;\r
+\r
+BEGIN\r
+  Nadji(n);\r
+END Permutacije;\r
+\r
+BEGIN  \r
+  Unos(n, A);\r
+  WrLn;\r
+  WrLn;\r
+  WrStr('Permutacije: ');\r
+  WrLn;\r
+  Permutacije(n, A);\r
+END PermP.\r
diff --git a/10. Obrnuti problem kraljica/Prezentacija.ppt b/10. Obrnuti problem kraljica/Prezentacija.ppt
new file mode 100644 (file)
index 0000000..e3b4ce5
Binary files /dev/null and b/10. Obrnuti problem kraljica/Prezentacija.ppt differ
diff --git a/10. Obrnuti problem kraljica/TopSpeed/QUEENS.MOD b/10. Obrnuti problem kraljica/TopSpeed/QUEENS.MOD
new file mode 100644 (file)
index 0000000..acae9e4
--- /dev/null
@@ -0,0 +1,315 @@
+MODULE Queens;\r
+\r
+  FROM IO IMPORT\r
+    WrStr, WrLn, WrCard, RdCard, OK;\r
+\r
+  FROM SYSTEM IMPORT\r
+    TSIZE;\r
+\r
+  FROM Storage IMPORT\r
+    ALLOCATE, DEALLOCATE;\r
+\r
+  IMPORT FIO;\r
+\r
+  CONST\r
+    MaxDim = 50;\r
+\r
+  TYPE\r
+    Indeks = [1 .. MaxDim];\r
+    DomenCene = [0 .. MaxDim * MaxDim];\r
+    DomenBrojaKraljica = [1 .. MaxDim * MaxDim];\r
+\r
+    PPolozaj = POINTER TO SPolozaj;\r
+    SPolozaj = RECORD\r
+                 Ko, Vr: Indeks;\r
+                 Cena: DomenCene;\r
+                 Veza: PPolozaj;\r
+               END;\r
+\r
+    PKraljica = POINTER TO SKraljica;\r
+    SKraljica = RECORD\r
+                  Pre, Sled: PKraljica;\r
+                  Kandidati: PPolozaj;\r
+                  TekKo, TekVr: Indeks;\r
+                END;\r
+\r
+    StanjeTip = RECORD\r
+                  Cena: DomenCene;\r
+                  PrvaKra, TekKra: PKraljica;\r
+                END;\r
+    StatusTip = (stZauzeto, stNapadnuto, stSlobodno);\r
+    ResenjeTip = RECORD\r
+                   Cena: DomenCene;\r
+                   Poz: ARRAY Indeks, Indeks OF StatusTip;\r
+                 END;\r
+  VAR\r
+    BrojKol, BrojVrs: Indeks;\r
+    BrojKraljica: DomenBrojaKraljica;\r
+\r
+  PROCEDURE Unos();\r
+  BEGIN\r
+    REPEAT\r
+      WrLn;\r
+      WrStr('Unesite broj Kolona sahovske table (od 1 do ');\r
+      WrCard(MaxDim, 1);\r
+      WrStr(') ------- ');\r
+      BrojKol:= RdCard();\r
+    UNTIL OK AND (1 <= BrojKol) AND (BrojKol <= MaxDim);\r
+    REPEAT\r
+      WrLn;\r
+      WrStr('Unesite broj Vrsta sahovske table (od 1 do ');\r
+      WrCard(MaxDim, 1);\r
+      WrStr(') ------- ');\r
+      BrojVrs:= RdCard();\r
+    UNTIL OK AND (1 <= BrojVrs) AND (BrojVrs <= MaxDim);\r
+    REPEAT\r
+      WrLn;\r
+      WrStr('Unesite broj kraljica (od 1 do ');\r
+      WrCard(BrojKol * BrojVrs, 1);\r
+      WrStr(') ------- ');\r
+      BrojKraljica:= RdCard();\r
+    UNTIL OK AND (1 <= BrojKraljica) AND (BrojKraljica <= BrojKol * BrojVrs);\r
+  END Unos;\r
+\r
+  PROCEDURE Postavi(VAR Stanje: StanjeTip);\r
+    VAR\r
+      Temp: PPolozaj;\r
+  BEGIN\r
+    WITH Stanje DO\r
+      Temp:= TekKra^.Kandidati;\r
+      TekKra^.Kandidati:= Temp^.Veza;\r
+      TekKra^.TekKo:= Temp^.Ko;\r
+      TekKra^.TekVr:= Temp^.Vr;\r
+      Cena:= Temp^.Cena;\r
+      DISPOSE(Temp);\r
+    END;\r
+  END Postavi;\r
+\r
+  PROCEDURE Inicijalizacija(VAR Stanje: StanjeTip; VAR Br: CARDINAL);\r
+    VAR\r
+      Tek, Pom: PKraljica;\r
+      i: DomenBrojaKraljica;\r
+  BEGIN\r
+    Br:= 0;\r
+    WITH Stanje DO\r
+      Cena:= 0;\r
+      NEW(PrvaKra);\r
+      TekKra:= PrvaKra;\r
+      Tek:= PrvaKra;\r
+      Tek^.Pre:= NIL;\r
+      FOR i:= 2 TO BrojKraljica DO\r
+        Pom:= Tek;\r
+        NEW(Tek^.Sled);\r
+        Tek:= Tek^.Sled;\r
+        Tek^.Pre:= Pom;\r
+      END;\r
+      Tek^.Sled:= NIL;\r
+    END;\r
+  END Inicijalizacija;\r
+\r
+  PROCEDURE Ispitaj(Ko, Vr: Indeks; Granica: PKraljica; VAR Stanje: StanjeTip; VAR Status: StatusTip);\r
+    VAR\r
+      Tek: PKraljica;\r
+      Jos: BOOLEAN;\r
+  BEGIN\r
+    WITH Stanje DO\r
+      Tek:= PrvaKra;\r
+      Jos:= Tek # Granica;\r
+      Status:= stSlobodno;\r
+      WHILE Jos DO\r
+        IF (Tek^.TekKo = Ko) AND (Tek^.TekVr = Vr) THEN\r
+          Status:= stZauzeto;\r
+          Jos:= FALSE;\r
+        ELSE\r
+          IF (Tek^.TekKo = Ko) OR (Tek^.TekVr = Vr) OR (ABS(Tek^.TekKo - Ko) = ABS(Tek^.TekVr - Vr)) THEN\r
+            Status:= stNapadnuto;\r
+          END;\r
+          IF Tek^.Sled= Granica THEN\r
+            Jos:= FALSE;\r
+          ELSE\r
+            Tek:= Tek^.Sled;\r
+          END;\r
+        END;\r
+      END;\r
+    END;\r
+  END Ispitaj;\r
+\r
+  PROCEDURE Stampa(VAR Resenje: ResenjeTip);\r
+    CONST\r
+      ImeFajla = "Resenje.txt";\r
+    VAR\r
+      Ko, Vr: Indeks;\r
+      Izlaz: FIO.File;\r
+  BEGIN\r
+    IF FIO.Exists(ImeFajla) THEN\r
+      Izlaz:= FIO.Append(ImeFajla);\r
+    ELSE\r
+      Izlaz:= FIO.Create(ImeFajla);\r
+    END;\r
+    WrLn;\r
+    WrStr('-----------------------------------------------------------------');\r
+    WrStr('---------------');\r
+    WrLn;\r
+    FIO.WrLn(Izlaz);\r
+    WrStr('Kraljice treba staviti na sledeca polja:');\r
+    FIO.WrStr(Izlaz, 'Kraljice treba staviti na sledeca polja:');\r
+    WrLn;\r
+    FIO.WrLn(Izlaz);\r
+    FOR Vr:= BrojVrs TO 1 BY -1 DO\r
+      WrLn;\r
+      FIO.WrLn(Izlaz);\r
+      FOR Ko:= 1 TO BrojKol DO\r
+        CASE Resenje.Poz[Ko, Vr] OF\r
+          stZauzeto: WrStr(' Q');\r
+                     FIO.WrStr(Izlaz, ' Q'); |\r
+          stNapadnuto: WrStr(' x');\r
+                       FIO.WrStr(Izlaz, ' x');\r
+        ELSE\r
+          WrStr(' .');\r
+          FIO.WrStr(Izlaz, ' .');\r
+        END;\r
+      END;\r
+    END;\r
+    WrLn;\r
+    FIO.WrLn(Izlaz);\r
+    WrLn;\r
+    FIO.WrLn(Izlaz);\r
+    WrStr('Broj slobodnih polja je: ');\r
+    FIO.WrStr(Izlaz, 'Broj slobodnih polja je: ');\r
+    WrCard(BrojKol * BrojVrs - Resenje.Cena, 1);\r
+    FIO.WrCard(Izlaz, BrojKol * BrojVrs - Resenje.Cena, 1);\r
+    FIO.Close(Izlaz);\r
+  END Stampa;\r
+\r
+  PROCEDURE Dame(BrojKol, BrojVrs: Indeks; BrojKraljica: DomenBrojaKraljica);\r
+    VAR\r
+      Stanje: StanjeTip;\r
+      Resenje: ResenjeTip;\r
+      MinCena: DomenCene;\r
+      Br: CARDINAL;\r
+\r
+    PROCEDURE NadjiKandidate(VAR Stanje: StanjeTip);\r
+\r
+      PROCEDURE NadjiCenu(k, v: Indeks; VAR Cena: DomenCene; VAR Stanje: StanjeTip);\r
+        VAR\r
+          Ko, Vr: Indeks;\r
+          Status: StatusTip;\r
+      BEGIN\r
+        Cena:= 0;\r
+        FOR Ko:= 1 TO BrojKol DO\r
+          FOR Vr:= 1 TO BrojVrs DO\r
+            IF (Ko # k) AND (Vr # v) AND (ABS(Ko - k) # ABS(Vr - v)) THEN\r
+              Ispitaj(Ko, Vr, Stanje.TekKra, Stanje, Status);\r
+              IF Status # stSlobodno THEN\r
+                INC(Cena);\r
+              END;\r
+            ELSE\r
+              INC(Cena);\r
+            END;\r
+          END;\r
+        END;\r
+      END NadjiCenu;\r
+\r
+      PROCEDURE Ubaci(VAR Prvi, Novi: PPolozaj);\r
+        VAR\r
+          Tek: PPolozaj;\r
+      BEGIN\r
+        IF (Prvi = NIL) OR (Novi^.Cena < Prvi^.Cena) THEN\r
+          Novi^.Veza:= Prvi;\r
+          Prvi:= Novi;\r
+        ELSE\r
+          Tek:= Prvi;\r
+          WHILE (Tek^.Veza # NIL) AND (Tek^.Veza^.Cena < Novi^.Cena) DO\r
+            Tek:= Tek^.Veza;\r
+          END;\r
+          Novi^.Veza:= Tek^.Veza;\r
+          Tek^.Veza:= Novi;\r
+        END;\r
+      END Ubaci;\r
+\r
+      VAR\r
+        k, v: Indeks;\r
+        Temp, Prvi: PPolozaj;\r
+        NovaCena: DomenCene;\r
+        Status: StatusTip;\r
+        PocKol, PocVrs: CARDINAL;\r
+\r
+    BEGIN\r
+      Prvi:= NIL;\r
+      IF Stanje.TekKra = Stanje.PrvaKra THEN\r
+        PocKol:= 1;\r
+      ELSE\r
+        PocKol:= Stanje.TekKra^.Pre^.TekKo;\r
+      END;\r
+      FOR k:= PocKol TO BrojKol DO\r
+        IF (k = PocKol) AND (Stanje.TekKra # Stanje.PrvaKra) THEN\r
+          PocVrs:= Stanje.TekKra^.Pre^.TekVr + 1;\r
+        ELSE\r
+          PocVrs:= 1;\r
+        END;\r
+        FOR v:= PocVrs TO BrojVrs DO\r
+          NadjiCenu(k, v, NovaCena, Stanje);\r
+          IF NovaCena < MinCena THEN\r
+            NEW(Temp);\r
+            WITH Temp^ DO\r
+              Veza:= NIL;\r
+              Ko:= k;\r
+              Vr:= v;\r
+              Cena:= NovaCena;\r
+            END;\r
+            Ubaci(Prvi, Temp);\r
+          END;\r
+        END;\r
+      END;\r
+      Stanje.TekKra^.Kandidati:= Prvi;\r
+    END NadjiKandidate;\r
+\r
+    PROCEDURE ZapamtiResenje(VAR Stanje: StanjeTip; VAR Resenje: ResenjeTip);\r
+      VAR\r
+        Ko, Vr: Indeks;\r
+        Status: StatusTip;\r
+    BEGIN\r
+      Resenje.Cena:= Stanje.Cena;\r
+      FOR Ko:= 1 TO BrojKol DO\r
+        FOR Vr:= 1 TO BrojVrs DO\r
+          Ispitaj(Ko, Vr, NIL, Stanje, Status);\r
+          Resenje.Poz[Ko, Vr]:= Status;\r
+        END;\r
+      END;\r
+    END ZapamtiResenje;\r
+\r
+  BEGIN\r
+    Inicijalizacija(Stanje, Br);\r
+    MinCena:= BrojKol * BrojVrs  + 1;\r
+    NadjiKandidate(Stanje);\r
+    WITH Stanje DO\r
+      WHILE TekKra # NIL DO\r
+        WHILE TekKra^.Kandidati # NIL DO\r
+          IF TekKra = PrvaKra THEN\r
+            INC(Br);\r
+            WrCard(Br, 4);\r
+          END;\r
+          Postavi(Stanje);\r
+          IF TekKra^.Sled = NIL THEN\r
+            IF Cena < MinCena THEN\r
+              MinCena:= Cena;\r
+              ZapamtiResenje(Stanje, Resenje);\r
+            END;\r
+          ELSE\r
+            TekKra:= TekKra^.Sled;\r
+            NadjiKandidate(Stanje);\r
+          END;\r
+        END;\r
+        TekKra:= TekKra^.Pre;\r
+      END;\r
+      Stampa(Resenje);\r
+    END;\r
+  END Dame;\r
+\r
+BEGIN\r
+  Unos();\r
+  WrLn;\r
+  WrStr('Sacekajte !!!');\r
+  WrLn;\r
+  Dame(BrojKol, BrojVrs, BrojKraljica);\r
+END Queens.\r
diff --git a/Cas07/MAXZBIR.MOD b/Cas07/MAXZBIR.MOD
deleted file mode 100644 (file)
index 85e8209..0000000
+++ /dev/null
@@ -1,100 +0,0 @@
-MODULE MaxZbir;\r
-\r
-  FROM IO IMPORT\r
-    WrStr, WrLn, WrCard, WrInt, RdCard, RdInt;\r
-\r
-  CONST\r
-    Max = 100;\r
-\r
-  VAR\r
-    A, B: ARRAY [1 .. Max], [1 .. Max] OF INTEGER;\r
-    m, n: CARDINAL;\r
-    (* B[vr, ko] je vrednost optimalnog resenja od (1, 1) do (vr, ko) *)\r
-\r
-  PROCEDURE Unos;\r
-    VAR\r
-      i, j: CARDINAL;\r
-  BEGIN\r
-    WrStr('Unesite n: ');\r
-    n:= RdCard();\r
-    WrStr('Unesite m: ');\r
-    m:= RdCard();\r
-    IF (n < Max) AND (m < Max) THEN\r
-      FOR i:= 1 TO m DO\r
-        FOR j:= 1 TO n DO\r
-          WrStr('A[');\r
-          WrCard(i, 1);\r
-          WrStr(', ');\r
-          WrCard(j, 1);\r
-          WrStr('] = ');\r
-          A[i, j] := RdInt();\r
-        END;\r
-      END;\r
-    END;\r
-  END Unos;\r
-\r
-  PROCEDURE Resi;\r
-    VAR\r
-      i, j: CARDINAL;\r
-  BEGIN\r
-    B[1, 1]:= A[1, 1];\r
-    FOR j:= 2 TO n DO\r
-      B[1, j]:= A[1, j] + B[1, j-1];\r
-    END;\r
-    FOR i:= 2 TO m DO\r
-      B[i, 1]:= A[i, 1] + B[i-1, 1];\r
-    END;\r
-    FOR i:= 2 TO m DO\r
-      FOR j:= 2 TO n DO\r
-        IF B[i, j - 1] < B[i - 1, j] THEN\r
-          B[i, j]:= A[i, j] + B[i - 1, j];\r
-        ELSE\r
-          B[i, j]:= A[i, j] + B[i, j - 1];\r
-        END;\r
-      END;\r
-    END;\r
-  END Resi;\r
-\r
-  PROCEDURE Ispis(Vr, Ko: CARDINAL);\r
-    VAR\r
-      i: CARDINAL;\r
-  BEGIN\r
-    IF (Vr > 1) AND (Ko > 1) THEN\r
-      IF B[Vr - 1, Ko] > B[Vr, Ko - 1] THEN\r
-        Ispis(Vr - 1, Ko);\r
-      ELSE\r
-        Ispis(Vr, Ko - 1);\r
-      END;\r
-      WrStr('(');\r
-      WrCard(Vr, 1);\r
-      WrStr(', ');\r
-      WrCard(Ko, 1);\r
-      WrStr(')');\r
-    ELSIF Vr = 1 THEN\r
-      FOR i:= 1 TO Ko DO\r
-        WrStr('(1, ');\r
-        WrCard(i, 1);\r
-        WrStr(')');\r
-      END;\r
-    ELSE\r
-      FOR i:= 1 TO Vr DO\r
-        WrStr('(');\r
-        WrCard(i, 1);\r
-        WrStr(', 1)');\r
-      END;\r
-    END;\r
-  END Ispis;\r
-\r
-BEGIN\r
-  Unos;\r
-  IF (n < Max) AND (m < Max) THEN\r
-    Resi;\r
-    WrStr('Maksimalni zbir je ');\r
-    WrInt(B[m, n], 1);\r
-    WrStr(' a postize se ovako:');\r
-    WrLn;\r
-    Ispis(m, n)\r
-  ELSE\r
-    WrStr('Suvise velika matrica.')\r
-  END\r
-END MaxZbir.\r
diff --git a/Cas07/Prezentacija.ppt b/Cas07/Prezentacija.ppt
deleted file mode 100644 (file)
index 3aab8ac..0000000
Binary files a/Cas07/Prezentacija.ppt and /dev/null differ
diff --git a/Cas08/BOJENJE.MOD b/Cas08/BOJENJE.MOD
deleted file mode 100644 (file)
index 6986a33..0000000
+++ /dev/null
@@ -1,128 +0,0 @@
-MODULE Bojenje;\r
-\r
-  FROM IO IMPORT\r
-    WrStr, WrLn, WrLngCard;\r
-\r
-  CONST\r
-    MaxBrojZemalja = 30;\r
-    DuzinaImena = 18;\r
-\r
-  TYPE\r
-    RangImena = [1 .. DuzinaImena];\r
-    Zemlja = [1 .. MaxBrojZemalja];\r
-    SkupZ = SET OF Zemlja;\r
-    Boja = (Crvena, Plava, Zelena, Zuta);\r
-    GraniceTip = ARRAY Zemlja OF SkupZ;\r
-    BojeZemalja = ARRAY Boja OF SkupZ;\r
-    ImenaZemalja = ARRAY Zemlja, RangImena OF CHAR;\r
-\r
-  VAR\r
-    Granice: GraniceTip;\r
-    Obojeno: BojeZemalja;\r
-    Ime: ImenaZemalja;\r
-    BrZ: Zemlja;\r
-    RBr: LONGCARD;\r
-\r
-  PROCEDURE Inicijalizacija;\r
-    VAR\r
-      i: Boja;\r
-  BEGIN\r
-    FOR i:= MIN(Boja) TO MAX(Boja) DO\r
-      Obojeno[i]:= SkupZ {};\r
-    END;\r
-    Ime[ 1]:= 'Maroko';\r
-    Ime[ 2]:= 'Zapadna Sahara';\r
-    Ime[ 3]:= 'Alzir';\r
-    Ime[ 4]:= 'Tunis';\r
-    Ime[ 5]:= 'Mauritanija';\r
-    Ime[ 6]:= 'Mali';\r
-    Ime[ 7]:= 'Niger';\r
-    Ime[ 8]:= 'Libija';\r
-    Ime[ 9]:= 'Senegal';\r
-    Ime[10]:= 'Gvineja';\r
-    Ime[11]:= 'Obala Slonovace';\r
-    Ime[12]:= 'Burkina Faso';\r
-    Ime[13]:= 'Benin';\r
-    Ime[14]:= 'Nigerija';\r
-    Ime[15]:= 'Cad';\r
-    Ime[16]:= 'Sudan';\r
-    Ime[17]:= 'Egipat';\r
-    Ime[18]:= 'Gambija';\r
-    Ime[19]:= 'Gvineja Bisao';\r
-    Ime[20]:= 'Siera Leone';\r
-    Granice[ 1]:= SkupZ {3, 2};\r
-    Granice[ 2]:= SkupZ {1, 3, 5};\r
-    Granice[ 3]:= SkupZ {1, 2, 5, 6, 7, 8, 4};\r
-    Granice[ 4]:= SkupZ {3, 8};\r
-    Granice[ 5]:= SkupZ {2, 3, 6, 9};\r
-    Granice[ 6]:= SkupZ {3, 5, 9, 10, 11, 12, 7};\r
-    Granice[ 7]:= SkupZ {3, 6, 12, 13, 14, 15, 8};\r
-    Granice[ 8]:= SkupZ {4, 3, 7, 15, 16, 17};\r
-    Granice[ 9]:= SkupZ {18, 19, 10, 6, 5};\r
-    Granice[10]:= SkupZ {19, 9, 6, 20, 11};\r
-    Granice[11]:= SkupZ {10, 6, 12};\r
-    Granice[12]:= SkupZ {6, 11, 13, 7};\r
-    Granice[13]:= SkupZ {12, 7, 14};\r
-    Granice[14]:= SkupZ {13, 7, 15};\r
-    Granice[15]:= SkupZ {14, 7, 8, 16};\r
-    Granice[16]:= SkupZ {17, 8, 15};\r
-    Granice[17]:= SkupZ {8, 15, 16};\r
-    Granice[18]:= SkupZ {9};\r
-    Granice[19]:= SkupZ {9, 10};\r
-    Granice[20]:= SkupZ {10};\r
-    RBr:= 0;\r
-    BrZ:= 20\r
-  END Inicijalizacija;\r
-\r
-  PROCEDURE StampajSkup(VAR S: SkupZ);\r
-    VAR\r
-      z: Zemlja;\r
-      Prvi: BOOLEAN;\r
-  BEGIN\r
-    Prvi:= TRUE;\r
-    FOR z:= 1 TO MaxBrojZemalja DO\r
-      IF z IN S THEN\r
-        IF Prvi THEN\r
-          WrStr(Ime[z]);\r
-          Prvi:= FALSE;\r
-        ELSE\r
-          WrStr(', ');\r
-          WrStr(Ime[z]);\r
-        END;\r
-      END;\r
-    END;\r
-  END StampajSkup;\r
-\r
-\r
-  PROCEDURE Stampa(RBr: LONGCARD; VAR Obojeno: BojeZemalja);\r
-  BEGIN\r
-    WrLn; WrLn; WrLngCard(RBr, 1);\r
-    WrLn; WrStr('Crvena: '); StampajSkup(Obojeno[Crvena]);\r
-    WrLn; WrStr('Plava:  '); StampajSkup(Obojeno[Plava]);\r
-    WrLn; WrStr('Zelena: '); StampajSkup(Obojeno[Zelena]);\r
-    WrLn; WrStr('Zuta:   '); StampajSkup(Obojeno[Zuta]);\r
-  END Stampa;\r
-\r
-  PROCEDURE Oboji(z: Zemlja);\r
-    VAR\r
-      i: Boja;\r
-  BEGIN\r
-    FOR i:= MIN(Boja) TO MAX(Boja) DO\r
-      IF Granice[z] * Obojeno[i] = SkupZ {} THEN\r
-        Obojeno[i]:= Obojeno[i] + SkupZ {z};\r
-        IF z = BrZ THEN\r
-          INC(RBr);\r
-          Stampa(RBr, Obojeno);\r
-        ELSE\r
-          Oboji(z + 1);\r
-        END;\r
-        Obojeno[i]:= Obojeno[i] - SkupZ {z};\r
-      END;\r
-    END;\r
-  END Oboji;\r
-\r
-BEGIN\r
-  Inicijalizacija;\r
-  Oboji(1);\r
-  (* Broj mogucih bojenja je 1 527 552 *)\r
-END Bojenje.\r
diff --git a/Cas08/Prezentacija.ppt b/Cas08/Prezentacija.ppt
deleted file mode 100644 (file)
index 73a6b8b..0000000
Binary files a/Cas08/Prezentacija.ppt and /dev/null differ
diff --git a/Cas09/Prezentacija.ppt b/Cas09/Prezentacija.ppt
deleted file mode 100644 (file)
index 2c77cf5..0000000
Binary files a/Cas09/Prezentacija.ppt and /dev/null differ
diff --git a/Cas09/Put.MOD b/Cas09/Put.MOD
deleted file mode 100644 (file)
index 2b93a80..0000000
+++ /dev/null
@@ -1,143 +0,0 @@
-MODULE Put;\r
-\r
-  FROM IO IMPORT\r
-    WrLn, WrStr, RdCard, WrCard, OK;\r
-\r
-  FROM Storage IMPORT\r
-    ALLOCATE;\r
-\r
-  CONST\r
-    MaxBrGrad = 50;\r
-\r
-  TYPE\r
-    Lista = POINTER TO Grad;\r
-    Grad = RECORD\r
-             Info: CARDINAL;\r
-             Veza: Lista;\r
-           END;\r
-    Mreza = ARRAY  [1 .. MaxBrGrad] OF Lista;\r
-    Posecen = ARRAY [1 .. MaxBrGrad] OF BOOLEAN;\r
-\r
-  VAR\r
-    m: Mreza;\r
-    BrojGr: CARDINAL;\r
-    GPoc, GKra: CARDINAL;\r
-\r
-  PROCEDURE Ubaci(VAR L: Lista; G: CARDINAL);\r
-    VAR\r
-      Tek, Novi: Lista;\r
-  BEGIN\r
-    IF (L = NIL) OR (G < L^.Info) THEN\r
-      NEW(Novi);\r
-      Novi^.Info:= G;\r
-      Novi^.Veza:= L;\r
-      L:= Novi;\r
-    ELSE\r
-      Tek:= L;\r
-      WHILE (Tek^.Veza # NIL) AND (Tek^.Veza^.Info < G) DO\r
-        Tek:= Tek^.Veza;\r
-      END;\r
-      IF (Tek^.Veza = NIL) OR (Tek^.Veza^.Info > G) THEN\r
-        NEW(Novi);\r
-        Novi^.Info:= G;\r
-        Novi^.Veza:= Tek^.Veza;\r
-        Tek^.Veza:= Novi;\r
-      END;\r
-    END;\r
-  END Ubaci;\r
-\r
-  PROCEDURE Povezi(G1, G2: CARDINAL);\r
-  BEGIN\r
-    Ubaci(m[G1], G2);\r
-    Ubaci(m[G2], G1);\r
-  END Povezi;\r
-\r
-  PROCEDURE Unos(VAR G1, G2: CARDINAL);\r
-    VAR\r
-      G: CARDINAL;\r
-  BEGIN\r
-    REPEAT\r
-      WrStr('Unesite broj gradova (od 2 do ');\r
-      WrCard(MaxBrGrad, 1);\r
-      WrStr(') ---- ');\r
-      BrojGr:= RdCard();\r
-      WrLn;\r
-    UNTIL OK AND (2 <= BrojGr) AND (BrojGr <= MaxBrGrad);\r
-    FOR G:= 1 TO BrojGr DO\r
-      m[G]:= NIL;\r
-    END;\r
-    REPEAT\r
-      WrStr('Unesite dva grada koji su povezani linijom.');\r
-      REPEAT\r
-        WrLn;\r
-        WrStr('Unesite red. br. prvog grada (ili 0 za kraj unosa linija) -- ');\r
-        G1:= RdCard()\r
-      UNTIL OK AND (G1 <= BrojGr);\r
-      IF G1 > 0 THEN\r
-        REPEAT\r
-          WrStr('Unesite red. br. drugog grada ------------------------------ ');\r
-          G2:= RdCard();\r
-        UNTIL OK AND (1 <= G2) AND (G2 <= BrojGr) AND (G1 # G2);\r
-        Povezi(G1, G2);\r
-      END;\r
-      WrLn;\r
-    UNTIL G1 = 0;\r
-    REPEAT\r
-      WrLn;\r
-      WrLn;\r
-      WrStr('Unesite red. br. pocetnog grada -- ');\r
-      G1:= RdCard();\r
-    UNTIL OK AND (1 <= G1) AND (G1 <= BrojGr);\r
-    REPEAT\r
-      WrLn;\r
-      WrStr('Unesite red. br ciljnog grada -- ');\r
-      G2:= RdCard();\r
-    UNTIL OK AND (1 <= G2) AND (G2 <= BrojGr) AND (G1 # G2);\r
-  END Unos;\r
-\r
-  PROCEDURE NadjiPut(Od, Do, brojGr : CARDINAL);\r
-    VAR\r
-     Pos: Posecen;\r
-     Reseno: BOOLEAN;\r
-     i: CARDINAL;\r
-     Resenje: ARRAY [1 .. MaxBrGrad] OF CARDINAL;\r
-\r
-    PROCEDURE Pokusaj(Od, Br: CARDINAL; VAR Reseno: BOOLEAN);\r
-      VAR\r
-        Pok: Lista;\r
-    BEGIN\r
-      Pos[Od]:= TRUE;\r
-      Resenje[Br]:= Od;\r
-      IF Od = Do THEN\r
-        Reseno:= TRUE;\r
-        WrLn;\r
-        WrStr('Put koji treba precji je sledeci:');\r
-        WrLn;\r
-        FOR i:= 1 TO Br DO\r
-          WrCard(Resenje[i], 4);\r
-        END;\r
-      ELSE\r
-        Pok:= m[Od];\r
-        WHILE (Pok # NIL) AND NOT Reseno DO\r
-          WHILE (Pok # NIL) AND Pos[Pok^.Info]  DO\r
-            Pok:= Pok^.Veza;\r
-          END;\r
-          IF Pok # NIL THEN\r
-            Pokusaj(Pok^.Info, Br + 1, Reseno);\r
-          END;\r
-        END;\r
-      END;\r
-    END Pokusaj;\r
-\r
-  BEGIN\r
-    Reseno:= FALSE;\r
-    FOR i:= 1 TO BrojGr DO\r
-      Pos[i]:= FALSE;\r
-    END;\r
-    Pokusaj(Od, 1, Reseno);\r
-  END NadjiPut;\r
-\r
-BEGIN\r
-  Unos(GPoc, GKra);\r
-  NadjiPut(GPoc, GKra, BrojGr);\r
-END Put.\r
diff --git a/Cas10/PERMP.MOD b/Cas10/PERMP.MOD
deleted file mode 100644 (file)
index b72c076..0000000
+++ /dev/null
@@ -1,92 +0,0 @@
-MODULE PermP;\r
-\r
-FROM IO IMPORT\r
-  WrStr, WrLn, WrCard, RdCard, WrChar, RdKey, OK;\r
-\r
-CONST\r
-  MaxDim = 50;\r
-\r
-TYPE\r
-  Niz = ARRAY [1 .. MaxDim] OF CHAR;\r
-\r
-VAR\r
-  A: Niz;\r
-  n: CARDINAL;\r
-\r
-PROCEDURE Unos(VAR n: CARDINAL; VAR A: Niz);\r
-VAR\r
-  i: CARDINAL;\r
-BEGIN\r
-  REPEAT\r
-    WrStr('Unesite n (1 <= n <= ');\r
-    WrCard(MaxDim, 1);\r
-    WrStr(') --- ');\r
-    n:= RdCard();\r
-    WrLn;\r
-  UNTIL OK AND (1 <= n) AND (n <= MaxDim);\r
-  REPEAT\r
-    WrLn;\r
-    WrStr('Unesite ');\r
-    WrCard(n, 1);\r
-    WrStr(' slova koja treba permutovati (mogu se i ponavljati):');\r
-    WrLn;\r
-    WrLn;\r
-    i:= 0;\r
-    REPEAT\r
-      INC(i);\r
-      A[i]:= RdKey();\r
-      WrChar(A[i])\r
-    UNTIL (i = n) OR ((CAP(A[i]) < 'A') AND (CAP(A[i]) > 'Z')\r
-                       AND (A[i] < '0') AND (A[i] > '9'));\r
-  UNTIL NOT ((CAP(A[i]) < 'A') AND (CAP(A[i]) > 'Z') AND\r
-             (A[i] < '0') AND (A[i] > '9'));\r
-END Unos;\r
-\r
-PROCEDURE Permutacije(n: CARDINAL; VAR A: Niz);\r
-\r
-  PROCEDURE Nadji(k: CARDINAL);\r
-  VAR\r
-    i, j: CARDINAL;\r
-    Temp: CHAR;\r
-  BEGIN\r
-    IF k = 1 THEN\r
-      FOR i:= 1 TO n DO\r
-        WrChar(A[i]);\r
-      END;\r
-      WrLn;\r
-    ELSE\r
-      Nadji(k - 1);\r
-      FOR i:= 1 TO k - 1 DO\r
-        IF A[k] # A[i] THEN\r
-          (* Zamenimo elemente samo ako su razliciti *)\r
-          j:= 1;\r
-          WHILE (j < i) AND (A[j] # A[i]) DO\r
-            INC(j);\r
-          END;\r
-          IF j = i THEN\r
-            (* A[i] nema duplikata u skupu {a[1], ... , a[i-1] *)\r
-            Temp:= A[i];\r
-            A[i]:= A[k];\r
-            A[k]:= Temp;\r
-            Nadji(k - 1);\r
-            Temp:= A[i];\r
-            A[i]:= A[k];\r
-            A[k]:= Temp;\r
-          END;\r
-        END;\r
-      END;\r
-    END;\r
-  END Nadji;\r
-\r
-BEGIN\r
-  Nadji(n);\r
-END Permutacije;\r
-\r
-BEGIN  \r
-  Unos(n, A);\r
-  WrLn;\r
-  WrLn;\r
-  WrStr('Permutacije: ');\r
-  WrLn;\r
-  Permutacije(n, A);\r
-END PermP.\r
diff --git a/Cas10/Prezentacija.ppt b/Cas10/Prezentacija.ppt
deleted file mode 100644 (file)
index 7097444..0000000
Binary files a/Cas10/Prezentacija.ppt and /dev/null differ
diff --git a/Cas11/Prezentacija.ppt b/Cas11/Prezentacija.ppt
deleted file mode 100644 (file)
index e3b4ce5..0000000
Binary files a/Cas11/Prezentacija.ppt and /dev/null differ
diff --git a/Cas11/QUEENS.MOD b/Cas11/QUEENS.MOD
deleted file mode 100644 (file)
index acae9e4..0000000
+++ /dev/null
@@ -1,315 +0,0 @@
-MODULE Queens;\r
-\r
-  FROM IO IMPORT\r
-    WrStr, WrLn, WrCard, RdCard, OK;\r
-\r
-  FROM SYSTEM IMPORT\r
-    TSIZE;\r
-\r
-  FROM Storage IMPORT\r
-    ALLOCATE, DEALLOCATE;\r
-\r
-  IMPORT FIO;\r
-\r
-  CONST\r
-    MaxDim = 50;\r
-\r
-  TYPE\r
-    Indeks = [1 .. MaxDim];\r
-    DomenCene = [0 .. MaxDim * MaxDim];\r
-    DomenBrojaKraljica = [1 .. MaxDim * MaxDim];\r
-\r
-    PPolozaj = POINTER TO SPolozaj;\r
-    SPolozaj = RECORD\r
-                 Ko, Vr: Indeks;\r
-                 Cena: DomenCene;\r
-                 Veza: PPolozaj;\r
-               END;\r
-\r
-    PKraljica = POINTER TO SKraljica;\r
-    SKraljica = RECORD\r
-                  Pre, Sled: PKraljica;\r
-                  Kandidati: PPolozaj;\r
-                  TekKo, TekVr: Indeks;\r
-                END;\r
-\r
-    StanjeTip = RECORD\r
-                  Cena: DomenCene;\r
-                  PrvaKra, TekKra: PKraljica;\r
-                END;\r
-    StatusTip = (stZauzeto, stNapadnuto, stSlobodno);\r
-    ResenjeTip = RECORD\r
-                   Cena: DomenCene;\r
-                   Poz: ARRAY Indeks, Indeks OF StatusTip;\r
-                 END;\r
-  VAR\r
-    BrojKol, BrojVrs: Indeks;\r
-    BrojKraljica: DomenBrojaKraljica;\r
-\r
-  PROCEDURE Unos();\r
-  BEGIN\r
-    REPEAT\r
-      WrLn;\r
-      WrStr('Unesite broj Kolona sahovske table (od 1 do ');\r
-      WrCard(MaxDim, 1);\r
-      WrStr(') ------- ');\r
-      BrojKol:= RdCard();\r
-    UNTIL OK AND (1 <= BrojKol) AND (BrojKol <= MaxDim);\r
-    REPEAT\r
-      WrLn;\r
-      WrStr('Unesite broj Vrsta sahovske table (od 1 do ');\r
-      WrCard(MaxDim, 1);\r
-      WrStr(') ------- ');\r
-      BrojVrs:= RdCard();\r
-    UNTIL OK AND (1 <= BrojVrs) AND (BrojVrs <= MaxDim);\r
-    REPEAT\r
-      WrLn;\r
-      WrStr('Unesite broj kraljica (od 1 do ');\r
-      WrCard(BrojKol * BrojVrs, 1);\r
-      WrStr(') ------- ');\r
-      BrojKraljica:= RdCard();\r
-    UNTIL OK AND (1 <= BrojKraljica) AND (BrojKraljica <= BrojKol * BrojVrs);\r
-  END Unos;\r
-\r
-  PROCEDURE Postavi(VAR Stanje: StanjeTip);\r
-    VAR\r
-      Temp: PPolozaj;\r
-  BEGIN\r
-    WITH Stanje DO\r
-      Temp:= TekKra^.Kandidati;\r
-      TekKra^.Kandidati:= Temp^.Veza;\r
-      TekKra^.TekKo:= Temp^.Ko;\r
-      TekKra^.TekVr:= Temp^.Vr;\r
-      Cena:= Temp^.Cena;\r
-      DISPOSE(Temp);\r
-    END;\r
-  END Postavi;\r
-\r
-  PROCEDURE Inicijalizacija(VAR Stanje: StanjeTip; VAR Br: CARDINAL);\r
-    VAR\r
-      Tek, Pom: PKraljica;\r
-      i: DomenBrojaKraljica;\r
-  BEGIN\r
-    Br:= 0;\r
-    WITH Stanje DO\r
-      Cena:= 0;\r
-      NEW(PrvaKra);\r
-      TekKra:= PrvaKra;\r
-      Tek:= PrvaKra;\r
-      Tek^.Pre:= NIL;\r
-      FOR i:= 2 TO BrojKraljica DO\r
-        Pom:= Tek;\r
-        NEW(Tek^.Sled);\r
-        Tek:= Tek^.Sled;\r
-        Tek^.Pre:= Pom;\r
-      END;\r
-      Tek^.Sled:= NIL;\r
-    END;\r
-  END Inicijalizacija;\r
-\r
-  PROCEDURE Ispitaj(Ko, Vr: Indeks; Granica: PKraljica; VAR Stanje: StanjeTip; VAR Status: StatusTip);\r
-    VAR\r
-      Tek: PKraljica;\r
-      Jos: BOOLEAN;\r
-  BEGIN\r
-    WITH Stanje DO\r
-      Tek:= PrvaKra;\r
-      Jos:= Tek # Granica;\r
-      Status:= stSlobodno;\r
-      WHILE Jos DO\r
-        IF (Tek^.TekKo = Ko) AND (Tek^.TekVr = Vr) THEN\r
-          Status:= stZauzeto;\r
-          Jos:= FALSE;\r
-        ELSE\r
-          IF (Tek^.TekKo = Ko) OR (Tek^.TekVr = Vr) OR (ABS(Tek^.TekKo - Ko) = ABS(Tek^.TekVr - Vr)) THEN\r
-            Status:= stNapadnuto;\r
-          END;\r
-          IF Tek^.Sled= Granica THEN\r
-            Jos:= FALSE;\r
-          ELSE\r
-            Tek:= Tek^.Sled;\r
-          END;\r
-        END;\r
-      END;\r
-    END;\r
-  END Ispitaj;\r
-\r
-  PROCEDURE Stampa(VAR Resenje: ResenjeTip);\r
-    CONST\r
-      ImeFajla = "Resenje.txt";\r
-    VAR\r
-      Ko, Vr: Indeks;\r
-      Izlaz: FIO.File;\r
-  BEGIN\r
-    IF FIO.Exists(ImeFajla) THEN\r
-      Izlaz:= FIO.Append(ImeFajla);\r
-    ELSE\r
-      Izlaz:= FIO.Create(ImeFajla);\r
-    END;\r
-    WrLn;\r
-    WrStr('-----------------------------------------------------------------');\r
-    WrStr('---------------');\r
-    WrLn;\r
-    FIO.WrLn(Izlaz);\r
-    WrStr('Kraljice treba staviti na sledeca polja:');\r
-    FIO.WrStr(Izlaz, 'Kraljice treba staviti na sledeca polja:');\r
-    WrLn;\r
-    FIO.WrLn(Izlaz);\r
-    FOR Vr:= BrojVrs TO 1 BY -1 DO\r
-      WrLn;\r
-      FIO.WrLn(Izlaz);\r
-      FOR Ko:= 1 TO BrojKol DO\r
-        CASE Resenje.Poz[Ko, Vr] OF\r
-          stZauzeto: WrStr(' Q');\r
-                     FIO.WrStr(Izlaz, ' Q'); |\r
-          stNapadnuto: WrStr(' x');\r
-                       FIO.WrStr(Izlaz, ' x');\r
-        ELSE\r
-          WrStr(' .');\r
-          FIO.WrStr(Izlaz, ' .');\r
-        END;\r
-      END;\r
-    END;\r
-    WrLn;\r
-    FIO.WrLn(Izlaz);\r
-    WrLn;\r
-    FIO.WrLn(Izlaz);\r
-    WrStr('Broj slobodnih polja je: ');\r
-    FIO.WrStr(Izlaz, 'Broj slobodnih polja je: ');\r
-    WrCard(BrojKol * BrojVrs - Resenje.Cena, 1);\r
-    FIO.WrCard(Izlaz, BrojKol * BrojVrs - Resenje.Cena, 1);\r
-    FIO.Close(Izlaz);\r
-  END Stampa;\r
-\r
-  PROCEDURE Dame(BrojKol, BrojVrs: Indeks; BrojKraljica: DomenBrojaKraljica);\r
-    VAR\r
-      Stanje: StanjeTip;\r
-      Resenje: ResenjeTip;\r
-      MinCena: DomenCene;\r
-      Br: CARDINAL;\r
-\r
-    PROCEDURE NadjiKandidate(VAR Stanje: StanjeTip);\r
-\r
-      PROCEDURE NadjiCenu(k, v: Indeks; VAR Cena: DomenCene; VAR Stanje: StanjeTip);\r
-        VAR\r
-          Ko, Vr: Indeks;\r
-          Status: StatusTip;\r
-      BEGIN\r
-        Cena:= 0;\r
-        FOR Ko:= 1 TO BrojKol DO\r
-          FOR Vr:= 1 TO BrojVrs DO\r
-            IF (Ko # k) AND (Vr # v) AND (ABS(Ko - k) # ABS(Vr - v)) THEN\r
-              Ispitaj(Ko, Vr, Stanje.TekKra, Stanje, Status);\r
-              IF Status # stSlobodno THEN\r
-                INC(Cena);\r
-              END;\r
-            ELSE\r
-              INC(Cena);\r
-            END;\r
-          END;\r
-        END;\r
-      END NadjiCenu;\r
-\r
-      PROCEDURE Ubaci(VAR Prvi, Novi: PPolozaj);\r
-        VAR\r
-          Tek: PPolozaj;\r
-      BEGIN\r
-        IF (Prvi = NIL) OR (Novi^.Cena < Prvi^.Cena) THEN\r
-          Novi^.Veza:= Prvi;\r
-          Prvi:= Novi;\r
-        ELSE\r
-          Tek:= Prvi;\r
-          WHILE (Tek^.Veza # NIL) AND (Tek^.Veza^.Cena < Novi^.Cena) DO\r
-            Tek:= Tek^.Veza;\r
-          END;\r
-          Novi^.Veza:= Tek^.Veza;\r
-          Tek^.Veza:= Novi;\r
-        END;\r
-      END Ubaci;\r
-\r
-      VAR\r
-        k, v: Indeks;\r
-        Temp, Prvi: PPolozaj;\r
-        NovaCena: DomenCene;\r
-        Status: StatusTip;\r
-        PocKol, PocVrs: CARDINAL;\r
-\r
-    BEGIN\r
-      Prvi:= NIL;\r
-      IF Stanje.TekKra = Stanje.PrvaKra THEN\r
-        PocKol:= 1;\r
-      ELSE\r
-        PocKol:= Stanje.TekKra^.Pre^.TekKo;\r
-      END;\r
-      FOR k:= PocKol TO BrojKol DO\r
-        IF (k = PocKol) AND (Stanje.TekKra # Stanje.PrvaKra) THEN\r
-          PocVrs:= Stanje.TekKra^.Pre^.TekVr + 1;\r
-        ELSE\r
-          PocVrs:= 1;\r
-        END;\r
-        FOR v:= PocVrs TO BrojVrs DO\r
-          NadjiCenu(k, v, NovaCena, Stanje);\r
-          IF NovaCena < MinCena THEN\r
-            NEW(Temp);\r
-            WITH Temp^ DO\r
-              Veza:= NIL;\r
-              Ko:= k;\r
-              Vr:= v;\r
-              Cena:= NovaCena;\r
-            END;\r
-            Ubaci(Prvi, Temp);\r
-          END;\r
-        END;\r
-      END;\r
-      Stanje.TekKra^.Kandidati:= Prvi;\r
-    END NadjiKandidate;\r
-\r
-    PROCEDURE ZapamtiResenje(VAR Stanje: StanjeTip; VAR Resenje: ResenjeTip);\r
-      VAR\r
-        Ko, Vr: Indeks;\r
-        Status: StatusTip;\r
-    BEGIN\r
-      Resenje.Cena:= Stanje.Cena;\r
-      FOR Ko:= 1 TO BrojKol DO\r
-        FOR Vr:= 1 TO BrojVrs DO\r
-          Ispitaj(Ko, Vr, NIL, Stanje, Status);\r
-          Resenje.Poz[Ko, Vr]:= Status;\r
-        END;\r
-      END;\r
-    END ZapamtiResenje;\r
-\r
-  BEGIN\r
-    Inicijalizacija(Stanje, Br);\r
-    MinCena:= BrojKol * BrojVrs  + 1;\r
-    NadjiKandidate(Stanje);\r
-    WITH Stanje DO\r
-      WHILE TekKra # NIL DO\r
-        WHILE TekKra^.Kandidati # NIL DO\r
-          IF TekKra = PrvaKra THEN\r
-            INC(Br);\r
-            WrCard(Br, 4);\r
-          END;\r
-          Postavi(Stanje);\r
-          IF TekKra^.Sled = NIL THEN\r
-            IF Cena < MinCena THEN\r
-              MinCena:= Cena;\r
-              ZapamtiResenje(Stanje, Resenje);\r
-            END;\r
-          ELSE\r
-            TekKra:= TekKra^.Sled;\r
-            NadjiKandidate(Stanje);\r
-          END;\r
-        END;\r
-        TekKra:= TekKra^.Pre;\r
-      END;\r
-      Stampa(Resenje);\r
-    END;\r
-  END Dame;\r
-\r
-BEGIN\r
-  Unos();\r
-  WrLn;\r
-  WrStr('Sacekajte !!!');\r
-  WrLn;\r
-  Dame(BrojKol, BrojVrs, BrojKraljica);\r
-END Queens.\r
diff --git a/Cas11/RESENJE.TXT b/Cas11/RESENJE.TXT
deleted file mode 100644 (file)
index 3b1c517..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-\r
-Kraljice treba staviti na sledeca polja:\r
-\r
- Q Q x\r
- x Q x\r
- x x .\r
-\r
-Broj slobodnih polja je: 1
\ No newline at end of file
diff --git a/Spisak.ppt b/Spisak.ppt
new file mode 100644 (file)
index 0000000..f03c9af
Binary files /dev/null and b/Spisak.ppt differ
Svarog.pmf.uns.ac.rs/gitweb maintanance Doni Pracner