Автор работы: Пользователь скрыл имя, 14 Февраля 2013 в 00:30, курсовая работа
Цель курсовой работы рассмотреть закрытое хеширование, основные виды хеш-функций и некоторые их модификации, проблемы удаления элементов из хеш-таблицы, а также некоторые варианты применения хеширования.
Объектом исследования являются алгоритмы хэширования.
Предметом является программная реализация алгоритма хэширования.
Для достижения цели исследования поставим перед собой следующие задачи:
-рассмотреть закрытое хэширование;
-охарактеризовать основные понятия хэширования;
-разработать программную реализацию алгоритма закрытого хэширования.
5.2. Программа должна
включать справочную
5.3.В состав сопровождающей документации должны входить:
5.3.1.Руководство системного программиста.
5.3.2.Руководство
5.3.3. Схемы программных модулей.
5.3.4.Формы интерфейса пользователя.
Приложение 2
Программная реализация закрытого хеширования
program hash;
uses
crt;
const
empty = -1;
deleted = -2;
B = 200;
type
TDictionary = array[1..(B - 1)] of integer;
{=============================
{хеш - функция}
function h(x : integer) : byte;
begin
h := x mod B;
end;
{=============================
procedure clearHash(var A : TDictionary);
var
i : byte;
begin
for i := 1 to (B - 1) do
begin
A[i] := empty;
end;
end;
{=============================
function locate(x : integer; A : TDictionary) : integer;
var
initial : integer;
i : integer;
begin
initial := h(x);
i := 0;
while((i < B) and (A[(initial + i) mod B] <> x) and (A[(initial + i) mod B] <> empty)) do
begin
inc(i);
end;
locate := (initial + i) mod B;
end;
{=============================
function locate_1(x : integer; A : TDictionary) : integer;
var
initial : integer;
i : integer;
begin
initial := h(x);
i := 0;
while((i < B) and
(A[(initial + i) mod B] <> x) and
(A[(initial + i) mod B] <> empty) and
(A[(initial + i) mod B] <> deleted)) do
begin
inc(i);
end;
locate_1 := (initial + i) mod B;
end;
{=============================
{проверяем наличие элемента в словаре}
function exists(x : integer; var A : TDictionary) : boolean;
begin
exists := (A[locate(x, A)] = x)
end;
{=============================
{как для множеств}
procedure include(x : integer; var A : TDictionary);
var
bucket : integer;
begin
if(A[locate(x, A)] = x) then
begin
exit;
end;
bucket := locate_1(x, A);
if((A[bucket] = empty) or (A[bucket] = deleted)) then
begin
A[bucket] := x;
end
else
begin
writeln('Set is full!!!');
end;
end;
{=============================
{аналогично множествам}
procedure exclude(x : integer; var A : TDictionary);
var
bucket : integer;
begin
bucket := locate(x, A);
if(A[locate(x, A)] = x) then
begin
A[bucket] := deleted;
end;
end;
{=============================
var
A : TDictionary;
i : integer;
value : integer;
begin
clrscr;
clearHash(A);
for i := 1 to 150 do
begin
value := random(B) + 1;
write(value:3, ' ');
include(value, A);
if(i mod 16 = 0) then
begin
writeln;
end;
end;
for i := 0 to (B - 1) do
begin
if(exists(i, A)) then
begin
write(i, ' ');
end;
if(i mod 16 = 0) then
begin
writeln;
end;
end;
readln;
end.
Информация о работе Программная реализация алгоритма закрытого хэширования