Помощь - Поиск - Пользователи - Календарь
Полная версия: Помогите решить ошибку.
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
lekosa
Выдает ошибку 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.
lekosa
Спасибо,конечно,но почему-то сам код не запускается,нажимаю и он сразу завершается,через shift+F9 тоже самое,можете подсказать что не так?
Федосеев Павел
Потому, что программа
begin
end.

А все остальные строки - подпрограмма.

Т.е. сама программа - пустая, ничего не делает.
lekosa
Цитата(Федосеев Павел @ 5.12.2016 23:21) *

Потому, что программа
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.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.