Я перехожу с C # на Delphi 2009, мне это очень нравится.
Я написал процедуру бинарного поиска, которая отлично работает. Я добавил простое выражение if-else в конце моего процесса, и оно просто не сработало! Я не вижу в этом ничего плохого, и мне стыдно сказать, что я застрял. Пожалуйста, помогите!
procedure BinSearch;
var
min,max,mid, x: integer;
A : array[0..4] of integer;
rslt : integer;
begin
writeln('binary search');
A[0] := 34; A[1] := 65; A[2] := 98; A[3] := 123; A[4] := 176;
listarray(a);
x := 62;
min := 0;
max := 4;
repeat
begin
mid := (min + max) div 2;
if x > A[mid] then
min := mid + 1
else
max := mid - 1;
end;
until (A[mid] = x) or (min > max);
writeln(mid);
writeln(a[mid]);
if A[mid] = x then
rslt := mid
else
rslt := not mid;
if 54 = 65 then
rslt := mid
else
rslt := not mid;
end;
Это if A[mid] = x then
тот, который не будет стрелять. при отладке не запускаются ни истинные, ни ложные ветви, отладчик просто пропускает их. Также if 54 = 65 then
, который является просто тестом, делает то же самое.
Если внутри моего цикла повторения работает нормально, хотя.
Если я копирую задачу if в мини-тестовый процесс, а затем вызываю этот процесс, он работает, поэтому мне кажется, что в процессе есть что-то еще, например пропущенный ;
, вызывающий нечто странное, но я не вижу Это. Пожалуйста, помогите!