Задать вопрос
9 января, 17:57

Найти все элементы массива равные Х, используя бинарный поиск. Х вводится с

клавиатуры, на паскале, методом " Поиск элементов в одномерном массиве", Решить с процедурой.

+2
Ответы (1)
  1. 9 января, 20:32
    0
    Если часть программы, в которой выполняется поиск, оформить в виде процедуры, то получится вот так:

    const n=20;

    type arr=array[1 ... n] of integer;

    var a:arr;

    i, x:integer;

    procedure f (a:arr; x:integer) ;

    var i, i1, i2:integer;

    begin

    i1:=1; i2:=n;

    repeat

    i: = (i1+i2) div 2;

    if a[i]
    if a[i]>x then i2: = (i1+i2) div 2-1;

    until (a[i]=x) or (i1>i2) ;

    if a[i]=x then

    begin

    writeln ('Искомый (ые) номер (а) элемента (ов) : ') ;

    while (i>0) and (a[i]=x) do i:=i-1;

    i:=i+1;

    while (i<=n) and (a[i]=x) do begin write (i,' ') ; i:=i+1; end;

    end

    else writeln ('Элемент не найден') ;

    writeln;

    end;

    begin

    Randomize;

    a[1]:=random (10) ;

    write (a[1],' ') ;

    for i:=2 to n do

    begin

    a[i]:=a[i-1]+random (10) ;

    write (a[i],' ') ;

    end;

    writeln;

    write ('x = ') ; readln (x) ;

    f (a, x) ;

    end.

    Пример:

    9 9 15 21 30 33 35 35 36 44 45 45 52 54 62 63 70 70 77 78

    x = 35

    Искомый (ые) номер (а) элемента (ов) :

    7 8
Знаете ответ на вопрос?
Не уверены в ответе?
Правильный ответ на вопрос 👍 «Найти все элементы массива равные Х, используя бинарный поиск. Х вводится с клавиатуры, на паскале, методом " Поиск элементов в одномерном ...» по предмету 📗 Информатика. Развернутая система поиска нашего сайта обязательно приведёт вас к нужной информации. Как вариант - оцените ответы на похожие вопросы. Но если вдруг и это не помогло - задавайте свой вопрос знающим оппонентам, которые быстро дадут на него ответ!
Искать готовые ответы