gitweb on Svarog
projekti pod git sistemom za održavanje verzija -- projects under the git version control systemdiff --git a/Cas09/Put.MOD b/Cas09/Put.MOD
--- a/Cas09/Put.MOD
+++ /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