Otóż tak, mam taki programik:
Program liniowe;
uses CRT;
Type tablica=array [1..20] of integer;
var t:tablica;
y:word;
Procedure ZapiszTablice (var t:tablica);
var i:byte;
begin
Randomize;
for i:=1 to 20 do
t[i]:= random (20);
end;
Function FindFirst(n:byte; t:tablica; y:integer) : integer;
var i:byte;
begin
i:=1;
while (i<n) and (y<>t[i]) do
i:= i+1;
if y= t[i] then FindFirst:= i
else FindFirst:= -1;
end;
Procedure PiszTab (t:tablica);
var i:byte;
begin
for i:=1 to 20 do
write (t[i]:4);
writeln;
end;
begin
clrscr;
writeln ('wyszukiwanie elementu w zbiorze nieuporzadkowanym');
writeln ('podaj liczbe, ktorej szukasz: ');
readln (y);
ZapiszTablice(t);
if FindFirst (20, t, y)= -1
then writeln ('brak szukanego elementu w zbiorze')
else writeln ('szukany element wystapil po raz pierwszy na pozycji ', FindFirst (20, t, y));
writeln;
PiszTab(t);
readln;
end.
Wszystko fajnie kolorowo, śmiga jak ta lala. No ale nie przeszło na sprawdzaniu projektu. Babka powiedziała że powinna tu znajdować się funkcja mieszająca. Próbuje ją jakoś wklepać ale nic mi nie wychodzi. Wykminiłem kilka takich:
procedure wstaw(var t:tablica; x:byte);
begin
h:=x mod n;
if t[h]=-1 then t[h]:=x
else
while t[h]<>-1 do
h:=(h+1)mod n;
t[h]:=x;
end;
procedure wstaw(var t:tablica; x:byte);
begin
h:=x mod n+1;
add(t[h],x);
end;
function hasz(x:string):byte;
var
i:integer;
h:byte;
begin
h:=0;
for i:=1 to lenght(x) do
h:=h odd(x[i]);
hasz:=h mod n;
end;
Z góry dzięki za odpowiedź.
Edit. Nie przejmujcie się nazwami procedur, wiem że jest zdeka bajzel ale robię wszystko na gwałt.