IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Задача по методу бинарного поиска., Нужна помощь.
Sardukar
сообщение 27.11.2007 22:11
Сообщение #1





Группа: Пользователи
Сообщений: 7
Пол: Мужской
Реальное имя: Alexander

Репутация: -  0  +


Всем добрый вечер. Надеюсь обращаюсь туда)
Суть проблемы, к сожалению у меня некоторые проблемы с созданием скриптов (мозг не так заточен), не могу написать скрипт на алгоритм. Алгоритм бинарного поиска, с поиском ключа.
Как пример>
есть ряд чисел {2,4,5,6,8,10,12,14,16,17,18,20,22,24,25,27,28,30,31} Ключ=16
Метод основан на выделении центра этого множества, или массив, кому как угодно.
формулы:
Ц(центр)=[n/2]+1 если множество нечётное
Ц=[n/2] если множество чётное
n=количество чисел в множестве, в данном случае n=19 нечётно
решение
1. Ц=[19/2]+1=10
сравниваем с ключом
K10~K
17~16 » множество разделилось, идём в левую половину
{2,4,5,6,8,10,12,14,16,}
2. Ц=[9/2]+1=5
K5~K
8~16 » вправо
{10,12,14,16}
3. Ц=[4/2]+1=3
K3~K (на самом деле K8)
14~16 »вправо
{16}
4. Ц=ключ остался один соответвенно Ц=1
K1~K (K9)
16~16 »ключ найден

З.ы. ЭТО ТОЛЬКО ПРИМЕР ЗАДАЧИ НА АЛГОРИТМ!
Кто может помочь в данном вопросе?:D И помочь с осуществлением скрипта, если честно то скриптов то много, но к сожалению они довольно часто высокого уровня и мудрённости + во многих присутствует команда процедуры (Procedure) которая меня уже достала, ибо с моим TP7.1 она всегда конфликтит, что-то не нравиться.
З.з.ы если кто-то рискнёт помочь, отчёт не должен быть столь ясным, должен быть ввод чисел, ключа(кстати если его нет то соответсвенно ответ что ключа нет).
просто вычисление чентра, сравнение ключа и в какую сторону множества переходим))
Всем спасибо за внимание.

Сообщение отредактировано: Sardukar - 27.11.2007 22:20
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
Sardukar
сообщение 28.11.2007 14:33
Сообщение #2





Группа: Пользователи
Сообщений: 7
Пол: Мужской
Реальное имя: Alexander

Репутация: -  0  +


For Гость
мда, пару раз замечал что к данным 2 выражениям применяют команду type смысл которых не понял, в данном случае их не дали...хотя, возможно что этого куска нехватает

type
DataItem = char;
DataArray = array [1..80] of char;


По теме как пробовал вызывать, в силу своей необразованности так »

program Puzirek;
uses crt;
Var i, j: Integer;
y:Integer;
Begin
For i := 2 to n do
For j := n downto i do
If X[j-1] > X[j] then begin y:=X[j-1];
X[j-1]:=X[j];
X[j]:=y
end;
end.


Зы, исходник потерял, нету данных по переменной "n X". Как видишь, ПРАВИЛЬНО вставлять в программу я не умею эти скрипты) Если научишь уму, буду благодарен.

To Lapp
2. иногда путаю термины. Для меня скрипт это html/css код страницы. В то время как программа, это конкретный файл запускаемый, или код программы, которые в последствии можно запустить.
3. Тоесть можно сказать что от Pascal уже пошёл Turbo Pascal и т.д.?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Гость
сообщение 28.11.2007 15:25
Сообщение #3


Гость






Цитата(Sardukar @ 28.11.2007 14:33) *


type
DataItem = char;
DataArray = array [1..N] of char;


Раз у Вас работа с числами, то поменять тип данных на integer

Параметр count из процедуры BSearch можно удалить. Верхняя граница у Вас будет N. Иначе непонятна цель ввода в процедуру этой константы.

В отделе объявления переменных X станет типа DataArray.

Процедура должна быть объявлена в разделе объявлений, например после объявления переменных. В теле программы должен идти ее вызов. Естесственно, после набивания исходного массива значениями.
Что-то типа вот такого.

program pascaltask;
uses crt;
const N=чемунить;
keyval = значение ключа;
type
DataItem = integer;
DataArray = array [1..N] of integer;
var
i , key, positionOFkey : DataItem ;
x: DataArray;
function BSearch (item: DataArray; count:integer;
key:DataItem):integer;
var
low, high, mid: integer;
found:boolean;
begin
low:=1; high:=count;
found:=false; { не найден }
while (low<=high) and (not found) do
begin
mid:=(low+high) div 2;
if key<item[mid] then high:=mid-1
else if key>item[mid] then low:=mid+1
else found:=true; { найден }
end;
if found then BSearch:=mid
else BSearch:=0; { не найден }
end; { конец поиска }

begin
randomize;
for i := 1 to N do
DataArray[i] := Random (какое-то число) ;

key := keyval ;
positionOFkey := BSearch (x, key);

writeln('ну и обработчик вывода');
end.


Чесгря, RTFM. В смысле, а не стОит ли купить и почитать книжку по синтаксису языка?
Я, конечно, понимаю, что для специалиста важнее знать алгоритмы, чем реализации языка. Но. Хоть какое-то базовое представление о языке, на котором пишешь, имеет смысл иметь.

Цитата

3. Тоесть можно сказать что от Pascal уже пошёл Turbo Pascal и т.д.?

TP - это реализация Паскаля от фирмы Борланд.
 К началу страницы 
+ Ответить 

Сообщений в этой теме
Sardukar   Задача по методу бинарного поиска.   27.11.2007 22:11
Lapp   Sardukar, не совсем понятно изъясняешься. Что ты ...   28.11.2007 7:08
Sardukar   Извиняюь если намудрил, всегда так выходит) Для ме...   28.11.2007 9:12
Lapp   Извиняюь если намудрил, всегда так выходит)Неплохо...   28.11.2007 11:28
Гость   Я бы сказал, проблема в типах, а не в переменных.....   28.11.2007 9:19
Sardukar   For Гость мда, пару раз замечал что к данным 2 выр...   28.11.2007 14:33
Гость   type DataItem = char; DataArray = array ...   28.11.2007 15:25
Гость   <..>, как говорят наши американские братья. ...   28.11.2007 15:28
Sardukar   Спасибо за приведёный пример...постараюсь понять) ...   28.11.2007 16:01
volvo   Честно говоря, тебе бы тоже почитать азбуку не меш...   28.11.2007 16:20
Гость   В несортированном массиве метод бинарного поиска в...   28.11.2007 17:16
Sardukar   Эмм.. по 1 пункту не понял по второму...тоесть ска...   28.11.2007 17:08
Гость   Эмм.. по 1 пункту не понял по второму...тоесть ск...   28.11.2007 17:35
Sardukar   program binPoisk; uses crt; const N=5; var i, p, ...   30.11.2007 21:38
Sardukar   Спасибо за помощь, но разобрался всё таки сам. Зак...   13.12.2007 2:20


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 20.07.2025 22:37
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"