Задачу надо решить с помощью бинарного поиска.
Кто откликнется буду очень признательна!

Код: Выделить всё
procedure BinarSearch;
{dvoichnyi poisk}
var left,right,middle:integer;
first,last,kol:integer;
s:string;
begin
repeat
write('Nuzhno naiti: ');
readln(s);
if s='' then writeln('Massiv NE soderzhit pustyh strok! Zadaite druguiu stroku.');
until s<>'';
left:=1;
right:=N;
repeat
middle:=left+(right-left) div 2;
if A[middle]>s then right:=middle
else left:=middle;
until right-left<=1;
if s=A[align=left] then last:=left
else if s=A[align=right] then last:=right
else last:=0;
if last>0 then
begin
first:=last;
kol:=0;
repeat
if a[first]=a[last] then
begin
dec(first);
inc(kol);
end;
until a[first]<>a[last];
for i:=first+1 to last do writeln('Pozicia: ',i,'.');
writeln('Vsego sovpadenii ',kol);
end
else writeln('Nichego NE naideno!');
end;
dr.Jekill писал(а):Вам замечание за неправильное название темы - читайте правила. В следующий раз удалю.
У меня почему-то программа не работает,как я думаю в программе надо заводить массив?dr.Jekill писал(а):Вот Вам binarsearch. Переделаете под себя.Код: Выделить всё
procedure BinarSearch; {dvoichnyi poisk} var left,right,middle:integer; first,last,kol:integer; s:string; begin repeat write('Nuzhno naiti: '); readln(s); if s='' then writeln('Massiv NE soderzhit pustyh strok! Zadaite druguiu stroku.'); until s<>''; left:=1; right:=N; repeat middle:=left+(right-left) div 2; if A[middle]>s then right:=middle else left:=middle; until right-left<=1; if s=A[align=left] then last:=left else if s=A[align=right] then last:=right else last:=0; if last>0 then begin first:=last; kol:=0; repeat if a[first]=a[last] then begin dec(first); inc(kol); end; until a[first]<>a[last]; for i:=first+1 to last do writeln('Pozicia: ',i,'.'); writeln('Vsego sovpadenii ',kol); end else writeln('Nichego NE naideno!'); end;
Хыиуду писал(а):Это просто процедура. Массив A и константу N надо задавать в соответствующих местах. А в самой программе нужно вызвать процедуру BinarSearch.
Хыиуду писал(а):Не понимаю, каким тут боком бинарный поиск, но "это" заменяет всю процедуру.
Вся программа будет выглядеть так:
const N=10;
M=20;
var i, j, s: integer;
matrix:array[1..N, 1..N] of integer;
begin
{Тут как-то заполняется матрица}
{Тут кусок, приведенный вами в последнем посте}
end.