Zadanie nastepujace: program ma wyszukiwac i podawac, na ktorym miejscu w zbiorze znajduje sie dana liczba; teoretycznie to ponizej ma dzialac, i uznajmy ze dziala, problem jednak w tym, ze wskazuje tylko 1 miejsce a zalezy mi aby wykazywalo wszystkie.
aby zobrazować:
mamy ciag liczb (np): 3, 4, 7, 18, 21, 2, 5, 7, 9,
chcĘ, aby program 'powiedzial' nam, na ktorym miejscu jest liczba 7,
'moj' program wykaze, ze jest ona na #3 i koniec, ale jak widzimy na #8 takze jest cyfra 7 i tegoten program nie wskaze;
zatem nalezy cos zmienic w fuckcji FindFirst, aby ta nie zatrzymywala sie po 1 znalezieni, ale zeby szla dalej. Mam wielka nadzieje, ze dosc jasno wytlumaczylem problem i prosze o pomoc. słowem: przerobic fuckcje FindFirst.
Program liniowe;
uses CRT;
Type tablica=array [1..20] of integer;
var t:tablica;
y:integer;
Procedure ZapiszTablice (var t:tablica);
var i:byte;
begin
Randomise;
for i:=1 to 20 do
t[i]:= random (100);
end;
Function FindFirst(n:byte; t:tablica; y:integer) : integer;
var i:byte;
begin
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);
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));
repeat until keypressed;
end.