profile
Опубликовано 5 лет назад по предмету Информатика от Rembo98

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

  1. Ответ
    Ответ дан petyaGavrikov
    Если часть программы, в которой выполняется поиск, оформить в виде процедуры, то получится вот так:
    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]<x then i1:=(i1+i2) div 2+1;
    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