Модульное программирование в Турбо Паскале. Бакланов М.В - 18 стр.

UptoLike

Составители: 

- 18 -
procedure
InputInfo(var Info: TInfo);
begin
InputPhone ( Info.Phone );
ReadLn ( Info.FIO )
end
;
-
procedure
HashInit( var HTable: THashTable );
var
i: Integer;
begin
HTable.Size := 0;
for
i:=0 to HTableLen-1 do
HTable.H[i].used := false
end
;
function
HashKey( Phone: TPhone ): Integer;
begin
-
HashKey := (Ord(Phone[1])*100 + Ord(Phone[2])*10 + Ord(Phone[3]) +
Ord(Phone[4])*100 + Ord(Phone[5])*10 + Ord(Phone[6]))
mod
HTableLen
end
;
- -
function
HashFind( var HTable: THashTable; Phone: TPhone;
var
Info: TInfo ): Boolean;
var
i: Integer;
begin
i := HashKey( Phone );
while
HTable.H[i].used and (HTable.H[i].Info.Phone<>Phone)
do
i := (i+1) mod HTableLen;
if
HTable.H[i].used
then
begin
Info := HTable.H[i].Info;
HashFind := true
end
else HashFind := false
end
;
- -
-
function
HashAdd(
var
HTable: THashTable; Info: TInfo ): Boolean;
var
inf : TInfo;
i : Integer;
begin
if
(HTable.Size=HTableLen-1) or HashFind( HTable, Info.Phone, inf )
                                  - 18 -
procedure InputInfo(var Info: TInfo);
begin
  InputPhone ( Info.Phone );
  :ULWH   <\_^bl_ NBH     
  ReadLn ( Info.FIO )
end;

^ BgbpbZebaZpby owr-lZ[ebpu `
procedure HashInit( var HTable: THashTable );
var i: Integer;
begin
  HTable.Size := 0;
  for i:=0 to HTableLen-1 do
    HTable.H[i].used := false
end;

function HashKey( Phone: TPhone ): Integer;
begin
  ^ < dZq_kl\_ owr-nmgdpbb bkihevam_f f_lh^ k\_jldb `
  HashKey := (Ord(Phone[1])*100 + Ord(Phone[2])*10 + Ord(Phone[3]) +
              Ord(Phone[4])*100 + Ord(Phone[5])*10 + Ord(Phone[6]))
              mod HTableLen
end;

^ Ihbkd \ owr-lZ[ebp_ ,QIR - bgnhjfZpby h[ Z[hg_gl_      `
^ k bkdhfuf ghf_jhf l_e_nhgZ 3KRQH                       `
^ Nmgdpby \ha\jZsZ_l agZq_gb_ BKLBG: _keb l_e_nhg gZc^_g `
function HashFind( var HTable: THashTable; Phone: TPhone;
                   var Info: TInfo ): Boolean;
var i: Integer;
begin
  i := HashKey( Phone );
  while HTable.H[i].used and (HTable.H[i].Info.Phone<>Phone)
    do i := (i+1) mod HTableLen;
  if HTable.H[i].used then
  begin
    Info := HTable.H[i].Info;
    HashFind := true
  end else HashFind := false
end;

^