Таблица с записями |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
Таблица с записями |
Pangolin |
Сообщение
#1
|
Новичок Группа: Пользователи Сообщений: 24 Пол: Мужской Репутация: 0 |
Дано описание константы n и типа таблицы со строки типа MyRecord
Const n=30; Type MyRecord = Record Key: Integer; Name: String; End; Table = Array[1..n] Of MyRecord Считая, что в таблице записи имеют различные ключи, описать логическую функцию Found(T, K, H), определяющую, есть ли в таблице T (все записи которой уже упорядочены по возрастанию поля Кеу) запись со значением поля Key, равным K, и, если есть, присваивающую ее номер параметру H. Помогите.. Никак не пойму чего хотят... |
volvo |
Сообщение
#2
|
Гость |
Цитата(Pangolin @ 14.06.2006 18:53) Никак не пойму чего хотят... Вот этого, наверное: function Found(var t: table; k: integer; var H: integer): boolean; Хотя, если записи упорядочены по возрастанию K, можно применить и другой алгоритм поиска, например бинарный... (Посмотри в поиске, klem4 как-то выкладывал реализацию...) |
Bill Gates |
Сообщение
#3
|
Новичок Группа: Пользователи Сообщений: 24 Пол: Мужской Репутация: 0 |
Держи решение!
Код function found(t:table;k:integer;var h:integer):boolean; var Lb,Ub:integer; begin found:=false; (***Будем использовать метод бинарного поиска для большей эффективности***) Lb:=1; Ub:=n; repeat H := (Lb+Ub)div 2; if k < t[H].key then Ub := H-1 else if k > t[H].key then Lb := H+1 else begin found:=true; break; end; until Lb > Ub; end; зы. Опоздал чуть-чуть... Зато метод поиска - бинарный! Сообщение отредактировано: Bill Gates - |
Pangolin |
Сообщение
#4
|
Новичок Группа: Пользователи Сообщений: 24 Пол: Мужской Репутация: 0 |
Эх... Спасибо огромное...
Даже не ожидал, что так быстро помогут.... |
Текстовая версия | 21.12.2024 23:17 |