Другие языки программирования и технологии

помогите плиз по паскалю....

нужно написать простейшую программу по теме "Массивы"...нужно использовать алгоритм поиска делением пополам а я не знаю как это написать если комуто не ясен вопрос то: например дан массив: a:array [1..10] of real; нужно найти какое-то число используя алгоритм поиска делением пополам
Bahitgan Muhambetov
Bahitgan Muhambetov
1 862
var
min, max: integer;
mid : integer;
A : array [1..10] of real;
x : real;
i : integer;
begin
{заполняем массив}
for i := 1 to 10 do
A := i/10;
x := 0.23; { это будем искать для примера}
min := 1;
max := 10;
repeat
mid := (min + max) div 2;
if x > A[mid] then
min := mid + 1
else
max := mid - 1;
until (A[mid] = x) or (min > max);
if min > max then
WriteLn('Нет такого значения')
else
WriteLn('Найдено в позиции ', mid)
end.
Жасулан Койшыбаев
Жасулан Койшыбаев
936
Лучший ответ
Bahitgan Muhambetov программа выполняется неправильно..
1. сначала отсортируй его по возрастанию, например.
2. Загляни в середину массива (Index_max - Index_min) div 2 и посмотри, если число, стоящее в середине меньше требуемого, то отбрасывай из рассмотрения первую половину массива (там точно не будет нужного числа) и возвращайся к началу пункта 2, только теперь Index_min будет = (Index_max - Index_min) div 2 + 1. Если же наоборот - больше нужного, то возвращайся к началу пункта 2, только Index_max = (Index_max - Index_min) div 2 - 1. В других случаях (когда Index_max = Index_min или Index_max < Index_min), переходи к пункту 3.
3. Если текущий элемент массива равен искомому числу, то поиск удался - возвращай элемент массива. Если не равен, то нет искомого числа в заданном массиве...