Помощь - Поиск - Пользователи - Календарь
Полная версия: Таблица с записями
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Pangolin
Дано описание константы 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.

Помогите.. Никак не пойму чего хотят... wacko.gif
volvo
Цитата(Pangolin @ 14.06.2006 18:53)
Никак не пойму чего хотят...

Вот этого, наверное:
function Found(var t: table; k: integer; var H: integer): boolean;
var i: integer;
begin
H := 0;
Found := True;

for i := 1 to n do
if T[i].Key = K then begin
H := i; exit;
end;

Found := False;
end;

Хотя, если записи упорядочены по возрастанию K, можно применить и другой алгоритм поиска, например бинарный... (Посмотри в поиске, klem4 как-то выкладывал реализацию...)
Bill Gates
Держи решение! cool.gif
Код
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;

зы. Опоздал чуть-чуть... Зато метод поиска - бинарный!
Pangolin
Эх... Спасибо огромное... good.gif
Даже не ожидал, что так быстро помогут....
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.