Другие языки программирования и технологии
помогите плиз по паскалю....
нужно написать простейшую программу по теме "Массивы"...нужно использовать алгоритм поиска делением пополам а я не знаю как это написать если комуто не ясен вопрос то: например дан массив: a:array [1..10] of real; нужно найти какое-то число используя алгоритм поиска делением пополам
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.
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.
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. Если текущий элемент массива равен искомому числу, то поиск удался - возвращай элемент массива. Если не равен, то нет искомого числа в заданном массиве...
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. Если текущий элемент массива равен искомому числу, то поиск удался - возвращай элемент массива. Если не равен, то нет искомого числа в заданном массиве...
Похожие вопросы
- Помогите плиз в паскале!!!!
- Помогите плиз с паскалем!
- Помогите, плиз, с паскалем!!!!
- Помогите плиз!!Задача в Паскале
- помогите плиз написать программу на паскале...тема массивы...нужно использовать поиск деления пополам!!!нужно срочно!
- Помогите плиз с массивом по паскалю!!))никак не могу решить(((
- Помогите плиз!Определяет какой из двух символ встречается чаще в данной строке? Паскаль
- Помогите плиз, язык программирования паскаль
- Помогите студентке с Паскаль
- Помогите с решением. Паскаль.