![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
Sardukar |
![]()
Сообщение
#1
|
Группа: Пользователи Сообщений: 7 Пол: Мужской Реальное имя: Alexander Репутация: ![]() ![]() ![]() |
Всем добрый вечер. Надеюсь обращаюсь туда)
Суть проблемы, к сожалению у меня некоторые проблемы с созданием скриптов (мозг не так заточен), не могу написать скрипт на алгоритм. Алгоритм бинарного поиска, с поиском ключа. Как пример> есть ряд чисел {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 |
![]() ![]() |
Sardukar |
![]()
Сообщение
#2
|
Группа: Пользователи Сообщений: 7 Пол: Мужской Реальное имя: Alexander Репутация: ![]() ![]() ![]() |
Эмм.. по 1 пункту не понял по второму...тоесть скажем у нас const = 9, и надо вводить не рандомно а именно по возрастанию или как? 1 3 7 9 11 12 13 14 15 19 20 25 и т.д. так?
|
Гость |
![]()
Сообщение
#3
|
Гость ![]() |
Эмм.. по 1 пункту не понял по второму...тоесть скажем у нас const = 9, и надо вводить не рандомно а именно по возрастанию или как? 1 3 7 9 11 12 13 14 15 19 20 25 и т.д. так? Да. Или задать массив изначально в разделе констант. Во втором случае появится 2 раздела описания констант: один для n, второй для исходного массива. (только не забывайте, что константе впоследствии нельзя присвоить значение). что-то вроде: const x : DataArray = (1,2,3,4,5,6,7,8,9) Иначе массив надо сначала отсортировать. Для выполнения единичного поиска - это, вообще говоря, бессмысленная операция, т.к. сама сортировка предполагает перебор всех элементов исходного массива. ПС. Попробуйте задание массива в разделе констант, если прокатит Это проще, чем разбираться с деревьями и прочими сортировками. ППС. В инете попробуйте в поисковике набрать "учебник Паскаль" или "Pascal". А то ну очень много пива придется выпить, пока не освоитесь. ![]() |
![]() ![]() |
![]() |
Текстовая версия | 20.07.2025 18:42 |