gitweb on Svarog
projekti pod git sistemom za održavanje verzija -- projects under
the git version control system
4 File
, Open
, Close
, RdCard
, EOF
, Exists
;
11 Osnova
= MaxDim
* (BrojBoja
- 1) + 1;
13 ImeVel
= 'Velika.Sli';
18 Slika
= ARRAY [1 .. MaxDim
], [1 .. MaxDim
] OF CARDINAL;
22 DimVel
, DimMal
, Vr
, Ko
: CARDINAL;
23 KljucMale
, KljucSegmenta
, Stepen
: CARDINAL;
26 PROCEDURE Citaj(VAR Slika
: Slika
;
35 Ok
:= Ok
AND Exists(Ime
);
41 WHILE Jos
AND (Vr
<= Dim
) DO
43 WHILE Jos
AND (Ko
<= Dim
) DO
44 Slika
[Vr
, Ko
]:= RdCard(F
);
45 Ok
:= Ok
AND (Slika
[Vr
, Ko
] < BrojBoja
);
57 PROCEDURE Proveri(VAR Velika
, Mala
: Slika
;
58 DimMal
, Vr
, Ko
: CARDINAL): BOOLEAN;
65 WHILE Iste
AND (i
<= DimMal
) DO
67 WHILE Iste
AND (j
<= DimMal
) DO
68 IF Mala
[i
, j
] # Velika
[Vr
+ i
- 1, Ko
+ j
- 1] THEN
78 PROCEDURE Hash(S
: Slika
; DimMal
, Vr
: CARDINAL): CARDINAL;
81 Kljuc
, ZbirKolone
, Temp
: CARDINAL;
87 FOR i
:= DimMal
TO 1 BY -1 DO
90 FOR j
:= Vr
TO Vr
+ DimMal
- 1 DO
91 ZbirKolone
:= ZbirKolone
+ (S
[j
, i
]);
94 Temp
:= (ZbirKolone
* Stepen
) MOD ProstBroj
;
95 Kljuc
:= (Kljuc
+ Temp
) MOD ProstBroj
;
96 Stepen
:= (Stepen
* Osnova
) MOD ProstBroj
;
100 Stepen
:= Stepen
DIV Osnova
;
106 PROCEDURE DoterajHash(S
: Slika
; DimMal
, Vr
, Ko
: CARDINAL;
107 VAR Kljuc
: CARDINAL);
110 ZbirKolone
, Temp
: CARDINAL;
114 FOR j
:= Vr
TO Vr
+ DimMal
- 1 DO
115 ZbirKolone
:= ZbirKolone
+ (S
[j
, Ko
- 1]);
118 Temp
:= (ZbirKolone
* Stepen
) MOD ProstBroj
;
120 IF Kljuc
>= Temp
THEN
121 Kljuc
:= Kljuc
- Temp
;
123 Kljuc
:= Kljuc
+ ProstBroj
- Temp
;
126 Kljuc
:= (Kljuc
* Osnova
) MOD ProstBroj
;
129 FOR j
:= Vr
TO Vr
+ DimMal
- 1 DO
130 ZbirKolone
:= ZbirKolone
+ (S
[j
, Ko
+ DimMal
- 1]);
133 Kljuc
:= (Kljuc
+ ZbirKolone
) MOD ProstBroj
;
139 Citaj(Velika
, ImeVel
, DimVel
, Ok
);
140 Citaj(Mala
, ImeMal
, DimMal
, Ok
);
142 KljucMale
:= Hash(Mala
, DimMal
, 1);
143 FOR Vr
:= 1 TO (DimVel
- DimMal
+ 1) DO
144 KljucSegmenta
:= Hash(Velika
, DimMal
, Vr
);
145 IF (KljucMale
= KljucSegmenta
) THEN
146 Iste
:= Proveri(Velika
, Mala
, DimMal
, Vr
, 1);
149 WrStr('Podslika je nadjena. Pocinje na poziciji (');
150 WrCard(Vr
, 1); WrStr(', '); WrCard(1, 1); WrStr(')');
153 FOR Ko
:= 2 TO (DimVel
- DimMal
+ 1) DO
154 DoterajHash(Velika
, DimMal
, Vr
, Ko
, KljucSegmenta
);
155 IF (KljucMale
= KljucSegmenta
) THEN
156 Iste
:= Proveri(Velika
, Mala
, DimMal
, Vr
, Ko
);
159 WrStr('Podslika je nadjena. Pocinje na poziciji (');
160 WrCard(Vr
, 1); WrStr(', '); WrCard(Ko
, 1); WrStr(')');
166 WrStr('Greska u citanju fajla.');
Svarog.pmf.uns.ac.rs/gitweb
maintanance
Doni Pracner