gitweb on Svarog
projekti pod git sistemom za održavanje verzija -- projects under
the git version control system
4 WrStr
, WrLn
, WrCard
, RdCard
, OK
;
18 Indeks
= [1 .. MaxDim
];
19 DomenCene
= [0 .. MaxDim
* MaxDim
];
20 DomenBrojaKraljica
= [1 .. MaxDim
* MaxDim
];
22 PPolozaj
= POINTER TO SPolozaj
;
29 PKraljica
= POINTER TO SKraljica
;
38 PrvaKra
, TekKra
: PKraljica
;
40 StatusTip
= (stZauzeto
, stNapadnuto
, stSlobodno
);
43 Poz
: ARRAY Indeks
, Indeks
OF StatusTip
;
46 BrojKol
, BrojVrs
: Indeks
;
47 BrojKraljica
: DomenBrojaKraljica
;
53 WrStr('Unesite broj Kolona sahovske table (od 1 do ');
57 UNTIL OK
AND (1 <= BrojKol
) AND (BrojKol
<= MaxDim
);
60 WrStr('Unesite broj Vrsta sahovske table (od 1 do ');
64 UNTIL OK
AND (1 <= BrojVrs
) AND (BrojVrs
<= MaxDim
);
67 WrStr('Unesite broj kraljica (od 1 do ');
68 WrCard(BrojKol
* BrojVrs
, 1);
70 BrojKraljica
:= RdCard();
71 UNTIL OK
AND (1 <= BrojKraljica
) AND (BrojKraljica
<= BrojKol
* BrojVrs
);
74 PROCEDURE Postavi(VAR Stanje
: StanjeTip
);
79 Temp
:= TekKra^.Kandidati
;
80 TekKra^.Kandidati
:= Temp^.Veza
;
81 TekKra^.TekKo
:= Temp^.Ko
;
82 TekKra^.TekVr
:= Temp^.Vr
;
88 PROCEDURE Inicijalizacija(VAR Stanje
: StanjeTip
; VAR Br
: CARDINAL);
91 i
: DomenBrojaKraljica
;
100 FOR i
:= 2 TO BrojKraljica
DO
110 PROCEDURE Ispitaj(Ko
, Vr
: Indeks
; Granica
: PKraljica
; VAR Stanje
: StanjeTip
; VAR Status
: StatusTip
);
120 IF (Tek^.TekKo
= Ko
) AND (Tek^.TekVr
= Vr
) THEN
124 IF (Tek^.TekKo
= Ko
) OR (Tek^.TekVr
= Vr
) OR (ABS(Tek^.TekKo
- Ko
) = ABS(Tek^.TekVr
- Vr
)) THEN
125 Status
:= stNapadnuto
;
127 IF Tek^.Sled
= Granica
THEN
137 PROCEDURE Stampa(VAR Resenje
: ResenjeTip
);
139 ImeFajla
= "Resenje.txt";
144 IF FIO.
Exists(ImeFajla
) THEN
145 Izlaz
:= FIO.
Append(ImeFajla
);
147 Izlaz
:= FIO.
Create(ImeFajla
);
150 WrStr('-----------------------------------------------------------------');
151 WrStr('---------------');
154 WrStr('Kraljice treba staviti na sledeca polja:');
155 FIO.
WrStr(Izlaz
, 'Kraljice treba staviti na sledeca polja:');
158 FOR Vr
:= BrojVrs
TO 1 BY -1 DO
161 FOR Ko
:= 1 TO BrojKol
DO
162 CASE Resenje.Poz
[Ko
, Vr
] OF
163 stZauzeto
: WrStr(' Q');
164 FIO.
WrStr(Izlaz
, ' Q'); |
165 stNapadnuto
: WrStr(' x');
166 FIO.
WrStr(Izlaz
, ' x');
169 FIO.
WrStr(Izlaz
, ' .');
177 WrStr('Broj slobodnih polja je: ');
178 FIO.
WrStr(Izlaz
, 'Broj slobodnih polja je: ');
179 WrCard(BrojKol
* BrojVrs
- Resenje.Cena
, 1);
180 FIO.
WrCard(Izlaz
, BrojKol
* BrojVrs
- Resenje.Cena
, 1);
184 PROCEDURE Dame(BrojKol
, BrojVrs
: Indeks
; BrojKraljica
: DomenBrojaKraljica
);
191 PROCEDURE NadjiKandidate(VAR Stanje
: StanjeTip
);
193 PROCEDURE NadjiCenu(k
, v
: Indeks
; VAR Cena
: DomenCene
; VAR Stanje
: StanjeTip
);
199 FOR Ko
:= 1 TO BrojKol
DO
200 FOR Vr
:= 1 TO BrojVrs
DO
201 IF (Ko # k
) AND (Vr # v
) AND (ABS(Ko
- k
) #
ABS(Vr
- v
)) THEN
202 Ispitaj(Ko
, Vr
, Stanje.TekKra
, Stanje
, Status
);
203 IF Status # stSlobodno
THEN
213 PROCEDURE Ubaci(VAR Prvi
, Novi
: PPolozaj
);
217 IF (Prvi
= NIL) OR (Novi^.Cena
< Prvi^.Cena
) THEN
222 WHILE (Tek^.Veza #
NIL) AND (Tek^.Veza^.Cena
< Novi^.Cena
) DO
225 Novi^.Veza
:= Tek^.Veza
;
232 Temp
, Prvi
: PPolozaj
;
235 PocKol
, PocVrs
: CARDINAL;
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
;
312 WrStr('Sacekajte !!!');
314 Dame(BrojKol
, BrojVrs
, BrojKraljica
);
Svarog.pmf.uns.ac.rs/gitweb
maintanance
Doni Pracner