Форум программистов, компьютерный форум, киберфорум
Delphi
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 11.10.2012
Сообщений: 14

хеширование

02.12.2012, 13:45. Показов 814. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!! Помогите пожалуйста!!

Вот задание:

Нужно организовать хеш-таблицу, метод хеширования- умножение(мультипликативный), разрешение коллизий - методом внешних цепочек.

Вот код задачи, всё работает, но почему то не добавляет и не ищет некоторые числа в таблице.
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
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Math, Grids;
 
type
 
     pElem = ^Elem;                         //указатель на элемент
     Elem = record                          //сам элемент
        key:integer;
        next:pElem;
     end;
 
 
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Button4: TButton;
    Button5: TButton;
    Edit1: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Edit2: TEdit;
    Label3: TLabel;
    Edit3: TEdit;
    StringGrid1: TStringGrid;
    Label4: TLabel;
    Label5: TLabel;
    Memo1: TMemo;
    Label6: TLabel;
    Label7: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
var m:integer;
  HT:array [1.. 1000] of pElem;   //хеш таблица
    T:array of integer;
    Cl:array of Integer;
    k:array of integer;
{$R *.dfm}
 
function h(k:integer):integer;
var A:Real;   
begin
  A:=(sqrt(5)-1)/2;
  h:=Floor(m*Abs(Floor(k*A)-k*A));
end;
 
 
// добавить
procedure TForm1.Button1Click(Sender: TObject);
 
var position,k:integer;
    p,cur:pElem;
begin
   k:=StrToInt(Edit2.Text);
     position:=h(k);
    GetMem(p,sizeof(Elem));
    p^.key := k;
    p^.next:=nil;
    cur:=HT[position];
    if cur=nil then HT[position]:=p
    else
    begin
       while cur^.next<>nil do
       begin
          cur := cur^.next;
 
       end;
       cur^.next := p;
    end;
    if(Form1.StringGrid1.Cells[1,position]<>'') then
        Form1.StringGrid1.Cells[1,position]:=Form1.StringGrid1.Cells[1,position]+','+inttostr(k)
    else Form1.StringGrid1.Cells[1,position]:=Form1.StringGrid1.Cells[1,position]+inttostr(k);
    if Form1.StringGrid1.Cells[2,position]='' then
       Form1.StringGrid1.Cells[2,position]:='0'
    else Form1.StringGrid1.Cells[2,position]:=inttostr(strtoint(Form1.StringGrid1.Cells[2,position])+1);
end;
 
//создать
procedure TForm1.Button5Click(Sender: TObject);
var i,j:integer;
begin
  m:=StrToInt(Edit1.Text);
  SetLength(T,m);
  SetLength(Cl,m);
  StringGrid1.RowCount:=m;
  for i:=0 to m-1 do
    //T[i]:=MaxInt;
    T[i]:=0;
  for j:=0 to m-1 do
    Cl[j]:=0
end;
 
//показать таблицу
procedure TForm1.Button4Click(Sender: TObject);
var i:integer;
begin
    for i:=0 to m-1 do
    begin
       StringGrid1.Cells[0,i]:=IntToStr(i);
       StringGrid1.Cells[1,i]:='';
       StringGrid1.Cells[2,i]:=''
    end;
end;
 
 //поиск
procedure TForm1.Button2Click(Sender: TObject);
 var position,el,k:integer;
    cur:pElem;
    find:boolean;
begin
    k:=strtoint(Edit3.Text);
    find:=false;
    position:=h(k);
    cur := HT[position];
    while (not find) and (cur<>nil) do
    begin
        if cur^.key = k then 
            find:=true;
        cur:=cur^.next;
    end;
    if not find then  Form1.Label7.Caption:='Ничего не найдено'
    else Form1.Label7.Caption:= 'Найдено в строке '+ inttostr(position);
end;
end.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
02.12.2012, 13:45
Ответы с готовыми решениями:

Хеширование внешние цепочки
Помогите пожалуйста с задачей на хеширование. Программу надо написать методом внешних цепочек. Условие: Задан набор записей следующей...

Хеширование??
Здравствуйте. Вот задали мне программу на хеширование. Вопрос, Есть ли оно в алгоритме Бойера - Мура???(прога рабочая!). Если нет,то...

Хеширование
Ребят, помогите пожалуйста сделать лабораторную. Задание (все перечисленные пункты относятся к одной работе): 1) написать функции...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
02.12.2012, 13:45
Помогаю со студенческими работами здесь

Хеширование md5
Доброго времени суток. Хотелось бы узнать, как просто хэшировать данные в Делфи и какие библиотеки надо подключать. Спасибо.

Организовать программно хеширование
Доброго времени суток господа! Задание: Организовать программно хеширование 100 записей в таблицу. состоящую из 20 ссылок на...

Хеширование в делфи (Indy)
Всем привет. Нашел функцию function md5(s: string): string; begin Result := ''; with TIdHashMessageDigest5.Create do try...

Хеширование паролей. Генераторы случайных чисел
1. Изучить алгоритмы хеширования паролей. 2. Изучить известные алгоритмы работы генераторов случайных чисел. 3 Проанализировать...

Sign и хеширование sha512 для биржи krake
Уважаемые форумчане. Третий день не могу победить хэш и авторизоваться на бирже kraken. Биржа выдает ошибку: {&quot;error&quot;:} ...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru