Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 2
Регистрация: 29.09.2014
Сообщений: 112
1

Хеш-таблица

31.03.2015, 12:47. Показов 3165. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Разработать хеш-таблицу для поиска пассажира рейса самолета.

| номер рейса | фамилия и. о. | признак | пункт назначения |

В каждой строке таблицы список или последовательность пассажиров данного рейса.
В качестве ключа при построении таблицы использовать номер рейса. Обеспечить поиск любого пассажира, исправление данных о пассажирах, получение справки о заполненности рейса (количество зарегистрированных пассажиров, а общее количество местданного рейса или любого другого взять постоянным, например, равным 20),сохранение таблицы в файле, вывод всех сведений на экран. Предусмотреть сортировку списка пассажиров по алфавиту любым методом сортировки. Все варианты обработки ведений, как создание исходных сведений, обработка данных по запросам обеспечиваются через меню."


Как реализовать сохранение в файл и сортировку по алфавиту?
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
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
program Projec2t2;
 
{$APPTYPE CONSOLE}
 
uses
  SysUtils;
 
const hsize=15;
 
type PocketArr=record
       Key:Integer;
       Str:String;
     end;
 
     type Plist=^TList;
     TList=record
        elt:String;
        npt:Plist;
     end;
 
     ListFL=record
       First,Last:Plist;
       Str:String;
     end;
 
var HashTable:Array [0..hsize] of ListFL;
    H, k, i: integer;
    Cmp:Integer;
 
function AddToDList(var obj:ListFL; elt:String):Integer;
var Res:Integer;
    PTemp: PList;
begin
  Res:=0;
  If obj.First=nil then
  begin
    New(PTemp);
    pTemp^.elt:=elt;
    obj.First:=PTemp;
    obj.Last:=PTemp;
    Res:=1;
  end
  else
  begin
    New(PTemp);
    pTemp^.elt:=elt;
    obj.Last^.npt:=Ptemp;
    obj.Last:=pTemp;
  end;
  Result:=Res;
end;
 
procedure PrintList(obj:ListFL);
var PCurrent: PList;
begin
  if obj.First<>nil then
  begin
    PCurrent:=obj.First;
    while PCurrent<>nil do
    begin
      write(PCurrent^.elt,' ');
      PCurrent:=PCurrent^.npt;
    end;
  end;
end;
 
function FindList(str:String; obj:ListFL):Boolean;
var PCurrent: PList;
    Res:Boolean;
begin
  Res:=False;
  if obj.First<>nil then
  begin
    PCurrent:=obj.First;
    while PCurrent<>nil do
    begin
      Inc(cmp);
      If PCurrent^.elt=Str then
      begin
        Res:=True;
        break;
      end;
      PCurrent:=PCurrent^.npt;
    end;
  end else Res:=False;
  Result:=Res;
end;
 
procedure PrintArrayList(obj: array of ListFL);
var i:Integer;
begin
  for i:=0 to High(obj) do
  begin
    Write(i,': ');
    Write(obj[i].Str,' ');
    PrintList(HashTable[i]);
    writeln;
  end;
end;
 
Function Hash(str : string):Integer;
var   Sum,i,Len,Res: Integer;
begin
  Sum:=0;
  Len:= Length(str);
  for i := 1 to Len do Sum:=Sum+ord(str[i]);
  Res:=Sum mod (High(HashTable)+1);
  Result:=Res;
end;
 
function AddToHAsh(str: String; var arr: array of ListFL):Integer;
var hsh:Integer;
    r:Boolean;
begin
  hsh:=Hash(str);
  Result:=hsh;
  If arr[hsh].Str='' then arr[hsh].Str:=str 
  else begin
    If arr[hsh].Str<>str then AddToDList(arr[hsh],str); 
  end;
end;
 
function DelFromDList(str:String;var obj:ListFL):Integer;
var PCurt,Pprev:PList;
    Res:Integer;
begin
  PCurt:=obj.First;
  while (PCurt<>nil) And (PCurt^.elt<>str) do
  begin
    Pprev:=PCurt;
    PCurt:=PCurt^.npt;
  end;
  If PCurt<>nil then
  begin
    If obj.First=PCurt then
    begin
      obj.First:=PCurt^.npt;
      Dispose(PCurt);
    end else
    begin
      Pprev^.npt:=PCurt^.npt;
      Dispose(PCurt);
    end;
  Res:=1;
  end
  else Res:=0;
  Result:=Res;
end;
 
function DelFromHash(str: String; var arr: array of ListFL):Integer;
var hsh,res:Integer;
    PTemp:PList;
begin
  hsh:=Hash(str);
  Res:=0;
  If str=arr[hsh].Str then
  begin
    If arr[hsh].First=nil then arr[hsh].Str:=''
    else begin
      PTemp:=arr[hsh].First;
      arr[hsh].First:=PTemp^.npt;
      arr[hsh].Str:=PTemp^.elt;
      Dispose(PTemp);
    end;
    Res:=1;
  end else If DelFromDList(str,arr[hsh])=1 then Res:=1;
  Result:=Res;
end;
 
function FindInHash(str: String; arr: array of ListFL):Integer;
var hsh,r:Integer;
begin
  hsh:=Hash(str);
  cmp:=0;
  Inc(cmp);
  If str=arr[hsh].Str then R:=hsh else
  begin
    If FindList(str,arr[hsh])=true then R:=hsh else R:=-1;
  end;
  writeln(cmp);
  Result:=R;
end;
 
procedure ShowMenu;
begin
  WriteLn('2: Add to hash table');
  WriteLn('3: Del from hash table');
  WriteLn('4: Find in hash table');
  WriteLn('5: Print hash table');
  WriteLn('6: Exit');
end;
 
procedure Command;
var num:Integer;
    cmd: Char;
    str: String;
begin
  Write('Enter command: ');
  ReadLn(cmd);
  case cmd of
    '2':
    begin
      str:='';
      while str='' do
      begin
        Write('Enter String: ');
        ReadLn(str);
      end;
      num:=AddToHAsh(str,HashTable);
      If num=-1 then WriteLn('Add canceled') else WriteLn(num);
    end;
    '3':
    begin
      Write('Enter String: ');
      ReadLn(str);
      If DelFromHash(str,HashTable)=0 then WriteLn('Can`t find string') else WriteLn('Element Successfull deleted');
    end;
    '4':
    begin
      Write('Enter String: ');
      ReadLn(str);
      num:=FindInHash(str,HashTable);
      If num=-1 then WriteLn('Can`t find string') else WriteLn('Element exsist and has key ',num);
    end;
    '5': PrintArrayList(HashTable);
    '6': Exit;
  end;
  Command;
end;
 
begin
  ShowMenu;
  Command;
end.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
31.03.2015, 12:47
Ответы с готовыми решениями:

Хеш-таблица
Я делаю задание: Организовать хеш-таблицу, используя хеш-функцию h(k) по методу умножения для...

Для формирования хеш-адреса использовать хеш-функцию универсального хеширования
Для формирования хеш-адреса использовать хеш-функцию универсального хеширования . Подскажите...

Хеш-таблицы
Кто сможет реализовать и скоко будет примерно стоить? Требуется построить хеш-таблицу, для...

Не верный хеш md5
Здравствуйте! Возникла проблема, а именно с расчетом хеша MD5. Да, я читал, что начиная с 9й...

0
31.03.2015, 12:47
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
31.03.2015, 12:47
Помогаю со студенческими работами здесь

MD5 хеш файла
Здраствуйте, помогите вычислить MD5 хеш файла. Те что то типа ввел путь до файла в edit а он...

Организовать хеш-таблицу
Организовать хеш-таблицу, используя h(x) по методу умножения для формирования хеш-адреса....

Реализация хеш-таблицы
Реализовать АТД «хеш-таблица». В АТД должны быть реализованы следующие операции: 1. добавление...

md5 хеш файла
требуется получить мд5 хеш, нашел исходник https://www.cyberforum.ru/post104544.html но как его...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru