Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.11.2010, 19:28   #1
kroatoani
Пользователь
 
Регистрация: 17.09.2010
Сообщений: 13
По умолчанию eto 4to za funktsiya ?

Код:
function RandStr: Tfio;
var
  i: byte;
begin
  Result:='';
  for i:=1 to 6 do Result:=Result+Chr(48+Random(10));
end;

end.

{TFIO=string[50]} - poyasnenie )
spasibo zaranee )

Последний раз редактировалось Stilet; 20.11.2010 в 19:54.
kroatoani вне форума Ответить с цитированием
Старый 20.11.2010, 19:32   #2
Hacker19_90
Delphi Warrior
Старожил
 
Аватар для Hacker19_90
 
Регистрация: 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
Hacker19_90 вне форума Ответить с цитированием
Старый 20.11.2010, 19:35   #3
kroatoani
Пользователь
 
Регистрация: 17.09.2010
Сообщений: 13
По умолчанию

mozhet bit' eto stroenie hesh tablitsi ???
kroatoani вне форума Ответить с цитированием
Старый 20.11.2010, 19:47   #4
maxflint
работаю за еду
Пользователь
 
Аватар для maxflint
 
Регистрация: 31.10.2009
Сообщений: 64
Радость

Код:
function RandStr: Tfio;
из названия можно понять что эта функция рандомного задания ключей, возможно для хэш таблицы)
Вотан ждёт меня в своих чертогах, на свой вечный пир!
maxflint вне форума Ответить с цитированием
Старый 20.11.2010, 19:55   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Помоему это просто генератор случайного набора символов, которые можно выдать за Фамилию.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 20.11.2010, 19:57   #6
Hacker19_90
Delphi Warrior
Старожил
 
Аватар для Hacker19_90
 
Регистрация: 15.08.2008
Сообщений: 2,502
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Помоему это просто генератор случайного набора символов, которые можно выдать за Фамилию.
Не не это именно генерация случайного шестизначного числа
так если брать за кодировку ASCI таблицу то цифры там в акурат с 48 кода начинаются
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++
ya.flex-freelance@yandex.ru Icq - 636-954-303
Hacker19_90 вне форума Ответить с цитированием
Старый 20.11.2010, 20:06   #7
kroatoani
Пользователь
 
Регистрация: 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.
kroatoani вне форума Ответить с цитированием
Старый 20.11.2010, 20:35   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
то цифры там в акурат с 48 кода начинаются
Ы-ы-ы... Вон оно куда...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 20.11.2010, 21:27   #9
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

То croatoani
Вы можете не иметь русской раскладки клавиатуры. Вы можете плохо знать некогда родной язык.
Но читаете по-русски вы вполне прилично.
И правила вы ОБЯЗАНЫ соблюдать в любом случае...

У нас принято оформлять код специальным тэгом - при помощи кнопочки "#".
Только...
И не значком #.
И не РНР-кодом.
И не значком цитаты.
И не собственными "ручками".
Рекомендую. Помимо общих правил форума есть и дополнения к ним в каждом разделе...
Модератор


Я вам советую все-таки прочесть правила. Ибо -
У нас принято давать темам названия, отражающие суть вопроса.
Читаем правила форума и раздела.
Модератор

А ваше название - "Это что за функция ?" - трудно отнести к "отражающим суть вопроса".
Намек понятен ?

Последний раз редактировалось mihali4; 20.11.2010 в 21:31.
mihali4 вне форума Ответить с цитированием
Старый 22.11.2010, 12:40   #10
kroatoani
Пользователь
 
Регистрация: 17.09.2010
Сообщений: 13
Радость

spasibo za pomosh ) po moemu eto pravilnij otvet ) spasibo eshye raz ))
kroatoani вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц