![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
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 - |
![]() ![]() |
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". А то ну очень много пива придется выпить, пока не освоитесь. ![]() |
![]() ![]() |
![]() |
Текстовая версия | 17.06.2024 18:57 |