Zdravim, dostal jsem ukol, napsat program pro vyhledavani v setridenem poli.
Vše v pohodě, dělám to přes půlení intervalů, ale náš školní systém pro vyhodnocování úkolů mi v jednom testu z 8 který dělá hází RE 201 a absolutne me nenapada kde bych moh pracovat mimo index, samozrejme ty data se kterejma ten test pracuje neznam,
kod je zde
var n, h, d, stred, k, pos: 1..1000000;
data: array[0..1000000] of integer;
inp, inp2, outp: text;
a: integer;
begin
assign (inp, 'data.in');
assign (inp2, 'dotazy.in');
assign (outp, 'vysledky.out');
reset(inp);
reset(inp2);
rewrite(outp);
readln(inp, n);
for pos := 1 to n do
read(inp, data[pos]);
readln(inp2, k);
for pos := 1 to k do
begin
read(inp2, a);
d := 1;
h := n;
while h - d > 1 do
begin
stred := (h + d) div 2;
if (data[stred] > a) then
h := stred - 1
else if (data[stred] < a) then
d := stred + 1
else
begin
d := stred;
h := stred;
while (d>1) AND (data[d] = a) do dec(d);
end;
end;
if (data[d] = a) then write(outp, d, ' ')
else if (data[h] = a) then write(outp, h, ' ')
else write(outp, '0 ');
end;
close (inp);
close (inp2);
close (outp);
end.
díky za radu pokud někdo máte nápad :)
pripadne kod je i v priloze