Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
_tatarin_
0 / 0 / 1
Регистрация: 14.02.2010
Сообщений: 5
1

Хэширование

31.03.2011, 22:11. Просмотров 761. Ответов 0
Метки нет (Все метки)

Доброго времени. В универе по спо (системное программное обеспечение) дали лабораторную. Суть в следующем. Дан список идентификаторов(.txt файл). Нужно оргаизовать поиск по этому списку 2-мя методами: рехеширование с произведением и с помощью простого списка ( кому интересно учебник Молчанова, Лабораторный практикум). Вот мой код:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
unit Unit1;
const
hash_min=Ord('0')+Ord('0')+Ord('0');
HASH_MAX= Ord('z')+Ord('z')+Ord('z');
REHASH1 = 127;
REHASH2 =223;
var
Form1: TForm1;
lengtM:integer;
sName:string ;
Find,NumSTR:integer;
implementation
function VarHash(const sName:string):longint;
var
i:integer;
begin
for i:=1 to length(sname) do
begin
Result:=(Ord(sName[i])+Ord(sName[(Length(sName)+i) div 2]) * i{HASH_MIN}) mod (HASH_MAX - HASH_MIN+i) + HASH_MiN;
if Result < HASH_MIN then Result := HASH_MIN;
end;
end;
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
fName,str:string;
i:integer;
begin
form1.OpenDialog1.Execute;
fname:=form1.OpenDialog1.FileName;
Memo2.Lines.loadfromfile(fName);
listbox1.Items.LoadFromFile(fName);
listbox1.ItemIndex:=0;
StringGrid1.RowCount:=memo2.Lines.Count+1;
NumSTR:=memo2.Lines.Count+1;
for i:=0 to NumSTR do
begin
//Заполнение таблицы идентификаторов
str:=memo2.Lines.Strings[i];
form1.StringGrid1.Cells[2,i+1]:=(str);
stringgrid1.Cells[0,i+1]:=inttostr(i);
stringgrid1.Cells[1,i+1]:=Inttostr(VarHash(str));
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
with stringgrid1 do
begin
ColCount:=3;
RowCount:=3;
cells[0,0]:='#Функции';
stringgrid1.ColWidths[1]:=110;
cells[1,0]:='Значение Функции';
stringgrid1.ColWidths[2]:=100;
cells[2,0]:='Строка';
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
var i,n:integer;
begin
find:=0;
n:=VArHAsh(form1.Edit1.Text);
begin
for i:=1 to numstr do
if (strtoint(stringgrid1.Cells[1,i])=n) and (edit1.Text=stringgrid1.Cells[2,i])
then
begin
Find:=Find+1;
form1.Label1.Caption:='Найдено Элементов - '+inttostr(Find);
showmessage('Элемент '+stringgrid1.Cells[2,i]+' найден'+chr(13)+'Найдено Элементов - '+inttostr(Find));
end;
end;
end;
procedure TForm1.Button3Click(Sender: TObject);
var j:integer;
begin
for j:=0 to (ListBox1.Count) do
if (edit2.Text)=ListBox1.Items[j] then
begin
Label2.Caption:='Элемент '+Edit2.Text+ ' найден'+#13 +'На '+inttostr(j+1)+ ' позиции' ;
break;
end;
end;
end.
Проблема в том что нужно вывести количество сравнений по каждому из методов. Подскажите куда копать? Заранее спасибо.
З.Ы Извините за некоменченый код..
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.03.2011, 22:11
Ответы с готовыми решениями:

Хэширование пароля
Здравствуйте, люди добрые. Помогите нубу, имеется php скприпт, который обрабатывает пароль и...

Хэширование и методы разрешения коллизий
Помогите переделать программу. В моей программе используется метод разрешения коллизий &quot;Метод...

Хэширование
Здравствуйте, вот прям вообще не понимаю, что нужно делать и что есть что и где :D....

Хэширование
«Дана таблица текстовой базы данных с полями фиксированной ширины. Произвести хэширование по двум...

Хэширование
Добрый день, коллеги! Вопрос в следующем, есть ли готовая реализация на 1С алгоритма хэширования...

0
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.03.2011, 22:11

Хэширование md5
Здравствуйте, вопрос такой, есть реализация MD5 (взятая кстати где-то здесь), она работает,но...

Трай-хэширование
Расскажите пожалуйста что такое trie -хэширование . Или где можно взять информацию о нем

Хэширование матриц
Мне надо быстро сравнивать матрицы. Сравнивать их поэлементно получается слишком долго, поэтому...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.