Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
bodi_90
0 / 0 / 1
Регистрация: 15.09.2014
Сообщений: 3
#1

Организовать программно хеширование

01.10.2014, 01:23. Просмотров 1084. Ответов 2
Метки нет (Все метки)

Доброго времени суток господа!

Задание:
Организовать программно хеширование 100 записей в таблицу. состоящую из 20 ссылок на линейные списки (стеки), первоначально пустые. записи имеют неотрицательные целые ключи k<50, формируемые случайным образом. Хеш-функцию организовать методом умножения в отдельной Function.

Прошу откликнуться на написание данной программы..
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.10.2014, 01:23
Ответы с готовыми решениями:

Программно организовать очередь в виде однонаправленного списка из элементов типа rec
Помогите пожалуйста...... Программно организовать очередь в виде...

Организовать программно линейный односвязный список
unit Unit3; interface uses Windows, Messages, SysUtils, Variants,...

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

Хеширование??
Здравствуйте. Вот задали мне программу на хеширование. Вопрос, Есть ли оно в...

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

2
northener
01.10.2014, 01:27
  #2

Не по теме:

Вот я отклинулся. Этого достаточно?

0
bodi_90
0 / 0 / 1
Регистрация: 15.09.2014
Сообщений: 3
08.10.2014, 22:22  [ТС] #3
Лучший ответ Сообщение было отмечено bodi_90 как решение

Решение

Решил вроде, сама програмка.

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
142
143
144
145
146
unit hesh;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Grids, Buttons;
 
type
  TCalcForm = class(TForm)
    Label1: TLabel;
    NumbEdit: TEdit;
    CalcButton: TButton;
    ResLabel: TLabel;
    ResStringGrid: TStringGrid;
    Label3: TLabel;
    GenerateButton: TBitBtn;
    procedure CalcButtonClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure GenerateButtonClick(Sender: TObject);
    procedure NumbEditChange(Sender: TObject);
 
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
const
  n    = 20;
  numb = 50;
  quantity = 100;
 
type
   PExtended = ^TExtended;
   TExtended = record
       value : integer;
    nextcell : PExtended;
end;
 
type
  TArrCell = array[1..n] of PExtended;
 
var
  CalcForm: TCalcForm;
  Arr: TArrCell;
 
implementation
 
{$R *.dfm}
function h(k:integer):integer;
var
  A: real;
begin
  A:=(sqrt(5)-1)/2;
  h:=Trunc(n*frac(k*A))+1;
end;
 
procedure paintGrid(num: integer; k: integer);
//var k: integer;
begin
 // k := createStruct(num);
  if CalcForm.ResStringGrid.Cells[1,k] = ''
    then
      CalcForm.ResStringGrid.Cells[1,k] := inttostr(num)
    else
      CalcForm.ResStringGrid.Cells[1,k] := CalcForm.ResStringGrid.Cells[1,k] + ', ' + inttostr(num);
end;
 
procedure createStruct(num:integer);
var new_cell, nxt_cell: PExtended;
    numCur: integer;
    fl: boolean;
begin
  fl := true;
  numCur := h(num);
  nxt_cell := Arr[numCur];
 
  while (nxt_cell<>nil) do
      begin
        if (nxt_cell^.value = num)
          then
            begin
              fl := false;
              break;
            end;
        nxt_cell := nxt_cell^.nextcell
      end;
 
  if fl
    then
      begin
        New(new_cell);
        new_cell^.value := num;
 
        new_cell^.nextcell := Arr[numCur];
        Arr[numCur] := new_cell;
        paintGrid(num, numCur);
      end;
end;
 
procedure randomN;
var x, i: integer;
begin
 Randomize;
  for i := 1 to quantity do
    begin
      x := Random(numb);
      createStruct(x);
    end;
end;
 
procedure TCalcForm.CalcButtonClick(Sender: TObject);
var num: integer;
begin
  num := strtoint(NumbEdit.text);
  createStruct(num);
end;
 
procedure TCalcForm.FormCreate(Sender: TObject);
var i: integer;
begin
  CalcForm.ResStringGrid.RowCount := n + 1;
  CalcForm.ResStringGrid.Cells[0,0] := 'Ïîçèöèÿ:';
  CalcForm.ResStringGrid.Cells[1,0] := 'Г‡Г*Г*Г·ГҐГ*ГЁГҐ:';
  for i := 1 to n do
    begin
      CalcForm.ResStringGrid.Cells[0,i] := inttostr(i);
    end;
end;
 
procedure TCalcForm.GenerateButtonClick(Sender: TObject);
begin
  randomN;
end;
 
procedure TCalcForm.NumbEditChange(Sender: TObject);
begin
  if NumbEdit.Text <> ''
    then
      CalcButton.Enabled := true
    else
      CalcButton.Enabled := false;
end;
 
end.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.10.2014, 22:22

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

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

Sign и хеширование sha512 для биржи krake
Уважаемые форумчане. Третий день не могу победить хэш и авторизоваться на бирже...


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

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

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