Anargamma ma’lumotlar esa bir xesh qiymatini chiqarishi mumkin. Bu masalani yechish
uchun har bir simvol qiymatiga pozitsiya qiymati ko’paytiriladi.
1-masala. Kalit simvollar qatordan iborat. Xesh funksiyada simvolli qator butun songa aylantiriladi,
barcha simvollar summasi hisoblanadi va
m ga bo’lishdan qoldiq hisoblanadi.
#include
<
iostream
>
using
namespace
std
;
int
h
(
char
*
key
,
int
m
)
{
int
s
=
0
;
while(*
key
)
s
+=
*
key
++;
return
s
%
m
;
}
int
main()
{
char
key
[]
=
{
'b'
,
'a'
,
'c'
};
int
s
=
h
(
key
,
10
);
cout<<
s
;
return
0
;
}
Bu usulda bir xil simvoldan iborat holatda kolliziya kelib chiqadi: abc va cab.
2-masala. Yuqoridagi usulga o’zgartirish kiritish mumkin. Faqat birinchi
va oxirgi simvolni
summasi hisoblanadi. Bunda esa abc va aec holatda kolliziya kelib chiqadi.
#include
<
iostream
>
#include
<
string.h
>
Dostları ilə paylaş: