Страница 1 из 1
Бинарный поиск
Добавлено: 07 мар 2010, 19:54
Оксана92
В массиве A(N) определите количество элементов, которые меньше заданного значения М.
Задачу надо решить с помощью бинарного поиска.
Кто откликнется буду очень признательна! 
Re: Парни помогите девушке решить задачку!
Добавлено: 08 мар 2010, 01:03
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;
Re: Парни помогите девушке решить задачку!
Добавлено: 08 мар 2010, 01:08
dr.Jekill
Вам замечание за неправильное название темы - читайте правила. В следующий раз удалю.
Re: Парни помогите девушке решить задачку!
Добавлено: 08 мар 2010, 11:07
Оксана92
dr.Jekill писал(а):Вам замечание за неправильное название темы - читайте правила. В следующий раз удалю.
Большое спасибо,с правилами ознакомлюсь!

Re: Парни помогите девушке решить задачку!
Добавлено: 08 мар 2010, 11:19
Оксана92
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;
У меня почему-то программа не работает,как я думаю в программе надо заводить массив?
Но он,почему-то не создан,да и почему-то right:=N; (n)-нигде не описан в varе,помогите правильно переделать чтобы все работало.
Re: Парни помогите девушке решить задачку!
Добавлено: 09 мар 2010, 09:33
Хыиуду
Это просто процедура. Массив A и константу N надо задавать в соответствующих местах. А в самой программе нужно вызвать процедуру BinarSearch.
Re: Парни помогите девушке решить задачку!
Добавлено: 10 мар 2010, 00:11
Оксана92
Хыиуду писал(а):Это просто процедура. Массив A и константу N надо задавать в соответствующих местах. А в самой программе нужно вызвать процедуру BinarSearch.
как мне в эту процедуру или в (основную программу) впихнуть это:
for i:=1 to n do
for j:=1 to n do
if matrix[i,j] < M then
s:=S+1;
writeln(s);
Re: Парни помогите девушке решить задачку!
Добавлено: 10 мар 2010, 09:16
Хыиуду
Не понимаю, каким тут боком бинарный поиск, но "это" заменяет всю процедуру.
Вся программа будет выглядеть так:
const N=10;
M=20;
var i, j, s: integer;
matrix:array[1..N, 1..N] of integer;
begin
{Тут как-то заполняется матрица}
{Тут кусок, приведенный вами в последнем посте}
end.
Re: Парни помогите девушке решить задачку!
Добавлено: 10 мар 2010, 21:52
Оксана92
Хыиуду писал(а):Не понимаю, каким тут боком бинарный поиск, но "это" заменяет всю процедуру.
Вся программа будет выглядеть так:
const N=10;
M=20;
var i, j, s: integer;
matrix:array[1..N, 1..N] of integer;
begin
{Тут как-то заполняется матрица}
{Тут кусок, приведенный вами в последнем посте}
end.
Мне сказали что это делать надо через ключ!!!ПОМОГИТЕ!!!
Re: Бинарный поиск
Добавлено: 12 мар 2010, 09:34
Хыиуду
Смотрите Википедию, статью Двоичный поиск. Там все есть.
Только ключа там никакого нет. Его в двоичном поиске нет вообще. В принципе. Скажите своему преподавателю, что не надо пытаться фотографировать с помощью утюга.