Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Помогите решить ошибку.

Автор: lekosa 29.11.2016 1:16

Выдает ошибку 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.

Автор: Федосеев Павел 29.11.2016 3:16

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 5.12.2016 21:55

Спасибо,конечно,но почему-то сам код не запускается,нажимаю и он сразу завершается,через shift+F9 тоже самое,можете подсказать что не так?

Автор: Федосеев Павел 5.12.2016 23:21

Потому, что программа

begin
end.

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

Т.е. сама программа - пустая, ничего не делает.

Автор: lekosa 12.12.2016 23:48

Цитата(Федосеев Павел @ 5.12.2016 23:21) *

Потому, что программа
begin
end.

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

Т.е. сама программа - пустая, ничего не делает.


Ясно,я все понял,но можете дополнить программу что-бы она работала,я все по инструкции делал,дальше не знаю как.Спасибо заранее.

Автор: Федосеев Павел 13.12.2016 1:47

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.