|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
20.11.2010, 19:28 | #1 |
Пользователь
Регистрация: 17.09.2010
Сообщений: 13
|
eto 4to za funktsiya ?
Код:
{TFIO=string[50]} - poyasnenie ) spasibo zaranee ) Последний раз редактировалось Stilet; 20.11.2010 в 19:54. |
20.11.2010, 19:32 | #2 |
Delphi Warrior
Старожил
Регистрация: 15.08.2008
Сообщений: 2,502
|
На скок я понял это функция создания рандомного 6-ти значного числа в виде строки!
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++ ya.flex-freelance@yandex.ru Icq - 636-954-303 |
20.11.2010, 19:35 | #3 |
Пользователь
Регистрация: 17.09.2010
Сообщений: 13
|
mozhet bit' eto stroenie hesh tablitsi ???
|
20.11.2010, 19:47 | #4 |
работаю за еду
Пользователь
Регистрация: 31.10.2009
Сообщений: 64
|
Код:
Вотан ждёт меня в своих чертогах, на свой вечный пир!
|
20.11.2010, 19:55 | #5 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Помоему это просто генератор случайного набора символов, которые можно выдать за Фамилию.
I'm learning to live...
|
20.11.2010, 19:57 | #6 | |
Delphi Warrior
Старожил
Регистрация: 15.08.2008
Сообщений: 2,502
|
Цитата:
так если брать за кодировку ASCI таблицу то цифры там в акурат с 48 кода начинаются
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++ ya.flex-freelance@yandex.ru Icq - 636-954-303 |
|
20.11.2010, 20:06 | #7 |
Пользователь
Регистрация: 17.09.2010
Сообщений: 13
|
ya ne poimu za4em ona ? kakoj y neye rol v moyem kode ?
unit lib; interface uses SysUtils,StdCtrls; const SizeTable=301; step: integer=1; type TFIO=string[50]; TInfo=record Phone: string[6]; FIO : TFIO; end; THashItem=record Info: TInfo; empty: boolean; // пуст ли элемент visit: boolean; // посещался ли элемент end; THashTable=record Size: integer; H : array[0..SizeTable-1] of THashItem; end; var HTable: THashTable; Info: TInfo; function RandStr: Tfio; procedure FindHash(HTable: THashTable; fio: TFio;var list:tlistbox); function AddHash(var HTable: THashTable; Inf: TInfo): integer; function DelHash(var HTable: THashTable; fio: Tfio): Boolean; function FindHash1(HTable: THashTable; fio: TFIO; var Inf: TInfo): integer; implementation function HashKey(fio: TFio): integer; // Хэш-функция, вычисляющая индекс элемента в хэш-таблице по ключу элемента var i: integer; begin Result:=0; for i:=1 to Length(fio) do Result:=Result+Ord(fio[i])*i; Result:=Result mod SizeTable; end; procedure FindHash(HTable: THashTable; fio: TFio;var list:tlistbox); // если элемент найден, значение функции равно его индексу, иначе -1 var i: integer; begin list.Items.Clear; i:=HashKey(fio); // вычисление индекса элемента if not HTable.H[i].empty and (HTable.H[i].Info.fio=fio) then list.Items.Add(HTable.H[i].Info.Phone); i:=(i+step) mod SizeTable; // встали на следующую возможную позицию with HTable do while (H[i].visit) do if not H[i].empty and (H[i].Info.fio = fio) then begin list.Items.Add(H[i].Info.Phone); i:=(i+step) mod sizetable; end // элемент найден else i:=(i+step) mod SizeTable; // иначе продолжаем поиск end; function AddHash(var HTable: THashTable; Inf: TInfo): integer; var i: integer; begin if (HTable.Size=SizeTable-1) then Result:=-1 // таблица переполнена else begin // вставка элемента в таблицу i:=HashKey(Inf.fio); if HTable.H[i].empty then // место свободно, можно вставить элемент with Htable.H[i] do begin empty:=false; visit:=true; info:=inf; HTable.Size:=HTable.Size+1; // Кол-во элементов в таблице увеличилось Result:=i; end else begin i:=(i+step) mod SizeTable; with HTable do while not Htable.H[i].empty do i:=(i+step) mod SizeTable; with Htable.H[i] do begin empty:=false; visit:=true; info:=inf; HTable.Size:=HTable.Size+1; Result:=i; end end; end; end; function DelHash(var HTable: THashTable; fio: TFio): Boolean; // если элемент удален, то значение функции равно true, // если элемента в таблице не было, то значение функции - false var i : integer; InfT: TInfo; begin if HTable.Size=0 then Result:=false // таблица была пуста else begin // в таблице есть элементы, можно удалять i:=HashKey(fio); // вычисление индекса элемента if Htable.H[i].info.fio=fio then begin // элемент найден и будет удален Htable.H [i].empty:=true; // элемент стал пустым Result:=true; HTable.Size:= HTable.Size-1 // кол-во элементов в таблице уменьшилось end else begin // коллизия i:=FindHash1(Htable, fio, InfT); if i=-1 then Result:=false // элемента нет в таблице else begin // удаление элемента с индексом i HTable.H[i].empty:=true; // элемент стал пустым Result:=true; HTable.Size:=HTable.Size-1; // кол-во элементов в таблице уменьшилось end end; end end; // DelHash function FindHash1(HTable: THashTable; fio: TFIO; var Inf: TInfo): integer; // если элемент найден, значение функции равно его индексу, иначе -1 var i : integer; Ok: Boolean; begin i:=HashKey(fio); // вычисление индекса элемента if not HTable.H[i].empty and (HTable.H[i].Info.fio=fio) then Result:=i // элемент найден else begin // разрешение коллизии i:=(i+step) mod SizeTable; // встали на следующую возможную позицию Ok:=false; with HTable do while not Ok and H[i].visit do if not HTable.H[i].empty and (H[i].Info.fio = fio) then Ok:=true // элемент найден else i:=(i+step) mod SizeTable; // иначе продолжаем поиск if Ok then Result:=i else Result:=-1 end; if Result<>-1 then Inf:=HTable.H[Result].Info; end; function RandStr: Tfio; var i: byte; begin Result:='' for i:=1 to 6 do Result:=Result+Chr(48+Random(10)); end; end. |
20.11.2010, 20:35 | #8 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
I'm learning to live...
|
|
20.11.2010, 21:27 | #9 |
*
Старожил
Регистрация: 22.11.2006
Сообщений: 9,201
|
То croatoani
Вы можете не иметь русской раскладки клавиатуры. Вы можете плохо знать некогда родной язык. Но читаете по-русски вы вполне прилично. И правила вы ОБЯЗАНЫ соблюдать в любом случае... У нас принято оформлять код специальным тэгом - при помощи кнопочки "#". Только... И не значком #. И не РНР-кодом. И не значком цитаты. И не собственными "ручками". Рекомендую. Помимо общих правил форума есть и дополнения к ним в каждом разделе... Модератор Я вам советую все-таки прочесть правила. Ибо - У нас принято давать темам названия, отражающие суть вопроса. Читаем правила форума и раздела. Модератор А ваше название - "Это что за функция ?" - трудно отнести к "отражающим суть вопроса". Намек понятен ? Последний раз редактировалось mihali4; 20.11.2010 в 21:31. |
22.11.2010, 12:40 | #10 |
Пользователь
Регистрация: 17.09.2010
Сообщений: 13
|
spasibo za pomosh ) po moemu eto pravilnij otvet ) spasibo eshye raz ))
|