gitweb on Svarog
projekti pod git sistemom za održavanje verzija -- projects under
the git version control system
4 WrStr
, WrLn
, WrCard
, RdCard
, OK
;
19 Interval
= [1 .. MaxDim
];
20 DomenCene
= INTEGER; (*[0 .. MaxDim * MaxDim];*)
21 DomenBrojaKraljica
= INTEGER; (*[1 .. MaxDim * MaxDim];*)
23 PPolozaj
= POINTER TO SPolozaj
;
30 PKraljica
= POINTER TO SKraljica
;
34 TekKo
, TekVr
: INTEGER;
39 PrvaKra
, TekKra
: PKraljica
;
41 StatusTip
= (stZauzeto
, stNapadnuto
, stSlobodno
);
44 Poz
: ARRAY Interval
, Interval
OF StatusTip
;
47 BrojKol
, BrojVrs
: INTEGER;
48 BrojKraljica
: INTEGER;
54 WrStr('Unesite broj Kolona sahovske table (od 1 do ');
58 UNTIL OK
AND (1 <= BrojKol
) AND (BrojKol
<= MaxDim
);
61 WrStr('Unesite broj Vrsta sahovske table (od 1 do ');
65 UNTIL OK
AND (1 <= BrojVrs
) AND (BrojVrs
<= MaxDim
);
68 WrStr('Unesite broj kraljica (od 1 do ');
69 WrCard(BrojKol
* BrojVrs
, 1);
71 BrojKraljica
:= RdCard();
72 UNTIL OK
AND (1 <= BrojKraljica
) AND (BrojKraljica
<= BrojKol
* BrojVrs
);
75 PROCEDURE Postavi(VAR Stanje
: StanjeTip
);
80 Temp
:= TekKra^.Kandidati
;
81 TekKra^.Kandidati
:= Temp^.Veza
;
82 TekKra^.TekKo
:= Temp^.Ko
;
83 TekKra^.TekVr
:= Temp^.Vr
;
89 PROCEDURE Inicijalizacija(VAR Stanje
: StanjeTip
; VAR Br
: CARDINAL);
92 i
: DomenBrojaKraljica
;
101 FOR i
:= 2 TO BrojKraljica
DO
111 PROCEDURE Ispitaj(Ko
, Vr
: INTEGER; Granica
: PKraljica
; VAR Stanje
: StanjeTip
; VAR Status
: StatusTip
);
121 IF (Tek^.TekKo
= Ko
) AND (Tek^.TekVr
= Vr
) THEN
125 IF (Tek^.TekKo
= Ko
) OR (Tek^.TekVr
= Vr
) OR (ABS(Tek^.TekKo
- Ko
) = ABS(Tek^.TekVr
- Vr
)) THEN
126 Status
:= stNapadnuto
;
128 IF Tek^.Sled
= Granica
THEN
138 PROCEDURE Stampa(VAR Resenje
: ResenjeTip
);
140 ImeFajla
= "Resenje.txt";
145 IF FIO.
Exists(ImeFajla
) THEN
146 Izlaz
:= FIO.
Append(ImeFajla
);
148 Izlaz
:= FIO.
Create(ImeFajla
);
151 WrStr('-----------------------------------------------------------------');
152 WrStr('---------------');
155 WrStr('Kraljice treba staviti na sledeca polja:');
156 FIO.
WrStr(Izlaz
, 'Kraljice treba staviti na sledeca polja:');
159 FOR Vr
:= BrojVrs
TO 1 BY -1 DO
162 FOR Ko
:= 1 TO BrojKol
DO
163 CASE Resenje.Poz
[Ko
, Vr
] OF
164 stZauzeto
: WrStr(' Q');
165 FIO.
WrStr(Izlaz
, ' Q'); |
166 stNapadnuto
: WrStr(' x');
167 FIO.
WrStr(Izlaz
, ' x');
170 FIO.
WrStr(Izlaz
, ' .');
178 WrStr('Broj slobodnih polja je: ');
179 FIO.
WrStr(Izlaz
, 'Broj slobodnih polja je: ');
180 WrCard(BrojKol
* BrojVrs
- Resenje.Cena
, 1);
181 FIO.
WrCard(Izlaz
, BrojKol
* BrojVrs
- Resenje.Cena
, 1);
185 PROCEDURE Dame(BrojKol
, BrojVrs
: INTEGER);
192 PROCEDURE NadjiKandidate(VAR Stanje
: StanjeTip
);
194 PROCEDURE NadjiCenu(k
, v
: INTEGER; VAR Cena
: DomenCene
; VAR Stanje
: StanjeTip
);
200 FOR Ko
:= 1 TO BrojKol
DO
201 FOR Vr
:= 1 TO BrojVrs
DO
202 IF (Ko # k
) AND (Vr # v
) AND (ABS(Ko
- k
) #
ABS(Vr
- v
)) THEN
203 Ispitaj(Ko
, Vr
, Stanje.TekKra
, Stanje
, Status
);
204 IF Status # stSlobodno
THEN
214 PROCEDURE Ubaci(VAR Prvi
, Novi
: PPolozaj
);
218 IF (Prvi
= NIL) OR (Novi^.Cena
< Prvi^.Cena
) THEN
223 WHILE (Tek^.Veza #
NIL) AND (Tek^.Veza^.Cena
< Novi^.Cena
) DO
226 Novi^.Veza
:= Tek^.Veza
;
233 Temp
, Prvi
: PPolozaj
;
235 PocKol
, PocVrs
: INTEGER;
239 IF Stanje.TekKra
= Stanje.PrvaKra
THEN
242 PocKol
:= Stanje.TekKra^.Pre^.TekKo
;
244 FOR k
:= PocKol
TO BrojKol
DO
245 IF (k
= PocKol
) AND (Stanje.TekKra # Stanje.PrvaKra
) THEN
246 PocVrs
:= Stanje.TekKra^.Pre^.TekVr
+ 1;
250 FOR v
:= PocVrs
TO BrojVrs
DO
251 NadjiCenu(k
, v
, NovaCena
, Stanje
);
252 IF NovaCena
< MinCena
THEN
264 Stanje.TekKra^.Kandidati
:= Prvi
;
267 PROCEDURE ZapamtiResenje(VAR Stanje
: StanjeTip
; VAR Resenje
: ResenjeTip
);
272 Resenje.Cena
:= Stanje.Cena
;
273 FOR Ko
:= 1 TO BrojKol
DO
274 FOR Vr
:= 1 TO BrojVrs
DO
275 Ispitaj(Ko
, Vr
, NIL, Stanje
, Status
);
276 Resenje.Poz
[Ko
, Vr
]:= Status
;
282 Inicijalizacija(Stanje
, Br
);
283 MinCena
:= BrojKol
* BrojVrs
+ 1;
284 NadjiKandidate(Stanje
);
286 WHILE TekKra #
NIL DO
287 WHILE TekKra^.Kandidati #
NIL DO
288 IF TekKra
= PrvaKra
THEN
293 IF TekKra^.Sled
= NIL THEN
294 IF Cena
< MinCena
THEN
296 ZapamtiResenje(Stanje
, Resenje
);
299 TekKra
:= TekKra^.Sled
;
300 NadjiKandidate(Stanje
);
303 TekKra
:= TekKra^.Pre
;
315 WrStr('Sacekajte !!!');
317 Dame(BrojKol
, BrojVrs
);
Svarog.pmf.uns.ac.rs/gitweb
maintanance
Doni Pracner