1. Пользуйтесь тегами кода. - [code] ... [/code] 2. Точно указывайте язык, название и версию компилятора (интерпретатора). 3. Название темы должно быть информативным.
В описании темы указываем язык!!!
type u = ^rec; rec = record key: integer; inf: integer; ptr: u; end; hTab = array [1..n] of rec;
var t : hTab; ch : char; hKey, i : integer;
function HashFunc(hKey : integer) : integer; begin HashFunc := hKey mod n ; end;
procedure AddRecord (var t : hTab); var tmp : u; i : integer; r : rec;
begin Write('Vvedite klych dobavljaemoj zapisi : '); ReadLn(r.key); Write('Vvedite niformacionnoe pole zapisi : '); ReadLn(r.inf);
r.ptr := nil;
i := HashFunc(r.key);
if t[i].key = 0 then begin t[i] := r; WriteLn('Zapis poneshena v poziciju ', i, '.'); end else begin new(tmp); tmp^ := r; tmp^.ptr := t[i].ptr; t[i].ptr := tmp; Writeln('Pozicija ', i, ' zanjata.'); Writeln('Zapis v cepochre perepolnenija.'); end; ReadKey; end;
procedure FindRec(var t : hTab; hKey : integer); var i : integer; p : u; begin i := HashFunc(hKey); WriteLn(' Poisk v tablice...');
if t[i].key = hKey then begin WriteLn('Zapis najdena v pozicii ', i); WriteLn('Znjachenie inf. polja ravno : ', t[i].inf); ReadKey; exit; end; if t[i].key = 0 then begin WriteLn('Zapisi v tablice net.'); ReadKey; exit; end;
WriteLn(i, ' - ', t[i].key); WriteLn('Poisk v cepochke perepolnenija...');
p := t[i].ptr; while (p <> nil) AND (p^.key <> hKey) do begin Write(p^.key,' '); p := p^.ptr; end;
WriteLn;
if p <> nil then begin WriteLn ('Zapis najdena'); WriteLn ('Znachenie inf. polja -- ', p^.inf); end else WriteLn ('Zapis ne najdena');
ReadKey; end;
begin for i := 1 to n do t[i].key := 0; repeat ClrScr;
case ch of '1' : begin AddRecord(t); WriteLn('Press any key'); end; '2' : begin Write('Vvedite kljuch iskomoj zapisi : '); ReadLn(hKey); FindRec(t, hKey); end; end;
until ch = '0'; end.
Нужно переделать в СИ, возникли проблемы с
Код
type u = ^rec; rec = record key: integer; inf: integer; ptr: u; end;
Да и вобще с указателями.... если можно объясните пожалуйста...
Код
function HashFunc(hKey : integer) : integer; begin HashFunc := hKey mod n; end;
еще проблема с этим... mod n
Сообщение отредактировано: KerK - 21.11.2006 12:29