Выдает ошибку Program1.pas(18) : Встречено '.', а ожидалось ';',не знаю как решить:
Собственно задача: Разработать рекурсивную процедуру двоичного поиска элемента массива, равного данному числу.
type mas =array[1..20] of integer;
Procedure bin(m:mas;first,last,x:integer;var i:integer);
var c : integer;
begin
if first>last then
begin
write('Числа ',x,' в массиве нет');
exit;
end;
begin
i:=0;
c:=(first + last) div 2;
if m[c]=x then i:=c
else if m[c]>x then bin(m,first,c,x,i)
else bin(m,last,c,x,i);
if i<>0 then write('Номер числа ',x,' в массиве=',i);
end;
end.
type
mas = array[1..20] of integer;
procedure bin(m: mas; First, last, x: integer; var i: integer);
var
c: integer;
begin
if First > last then
begin
Write('Числа ', x, ' в массиве нет');
exit;
end;
begin
i := 0;
c := (First + last) div 2;
if m[c] = x then
i := c
else if m[c] > x then
bin(m, First, c, x, i)
else
bin(m, last, c, x, i);
if i <> 0 then
Write('Номер числа ', x, ' в массиве=', i);
end;
end;
begin
end.
Спасибо,конечно,но почему-то сам код не запускается,нажимаю и он сразу завершается,через shift+F9 тоже самое,можете подсказать что не так?
Потому, что программа
begin
end.
begin
end.
program lekosa;
type
mas = array[1..20] of integer;
procedure bin(var m: mas; First, last, x: integer; var i: integer);
var
c: integer;
begin
if First >= last then
begin
i := 0;
exit;
end;
begin
i := 0;
c := (First + last) div 2;
if m[c] = x then
i := c
else if m[c] > x then
bin(m, First, c - 1, x, i)
else
bin(m, c + 1, last, x, i);
end;
end;
var
a: mas;
i: integer;
x: integer;
begin
writeln('Массив:');
for i := 1 to 20 do
begin
a[i] := 7 + 17 * i;
Write(a[i]: 4);
end;
writeln;
x := 228;
bin(a, 1, 20, x, i);
if i <> 0 then
writeln('Номер числа ', x, ' в массиве=', i)
else
writeln('Числа ', x, ' в массиве нет');
end.