Kornilova
?>

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

Информатика

Ответы

aleksandramir90
Const n=20;
var a:array[1..n] of integer;
i,i1,i2,x:integer;
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);
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.

Пример:
5 6 14 15 15 22 30 36 45 45 50 56 60 64 67 76 84 92 99 101 
x = 15
Искомый(ые) номер(а) элемента(ов):
4 5 
slspam
Прежде всего хотелось бы отметить,что один Кбайт = 2^13 бит  или 8192 бит;
                                                                      1 байте - 8 бит;
                                                                       1кбайте - 1024 байта.
                                                                       
1).  Два варианта решения : 
 А ). Переведем объем сообщения из кбайт в биты: 2.5 * 2^13 = 20480.
     Теперь найдем время:  20480/2560 = 8 (мин)
      Как посчитать без калькулятора: 
              - Сначало представим число 2560 ,как 256 * 10.
              - дальше представим число 256,как 2^8 ,а число 10 - 2 * 5.
  Получится такой пример :  2.5*2^13/2^8*2*5  , дальше сокращаем наши двойки со степенями, получится 2.5*2^4/5 , тоесть зная свойства степеней : a^n/a^m= a^n-m  , получается  2^13/2^9=2^13-9. Думаю тут все понятно... ну в итоге 2.5*2^4/5 =8 (мин).
      б).  Переведем скорость передачи 2560 из бит в байты : 2560бит/8 = 320 байт,а объем сообщения 2.5 из кбайт в байты : 2.5кбайт * 1024 = 2560 байт.
 Ну дальше всё просто :  2560/320=8 (мин).
 3 ). Объем сообщения переводим из Кбайт в  биты тоесть: 225*2^13/14400=128.
А вторую задачу тебе правильно решили.
mila010982

1 часть решается 1 таблицей: решается таблицей. Вот сама таблица, вода и молоко не в бутылке, лимонад и вода не в банке, так как, сосуд с лимонадом находится между кувшином и сосудом с квасом, то получается, что лимонад и квас не в кувшине , так как стакан находится около банки и сосуда с молоком, то получается, что молоко находится не в банке и не в стакане. Получилось, раз молоко, не в банке не в стакане и не в бутылке, то он в кувшине. А значит остальные не могут быть в кувшине, раз там уже молоко. Теперь получается что вода не в кувшине, не в банкек и не в бутылке, получается она в стакане, а это значит что больше ничего в стакане быть не может, раз там уже вода. Теперь мы видим, что лимонад, не в банке, не в кувшине и не в стакане, значит он в бутылке. А это значит что оставшийся квас уже не в бутылке, так как он больше нигде не может быть он в банке.

 Получается так в 1 действии: кувшин с молоком, бутылка с лимонадом, банка с квасом и стакан с водой.

                 Бутылка   Стакан   Кувшин    Банка

Молоко     \   -         \      -      \   +         \    -       \

Лимонад  \       +      \      -        \   -          \    -      \

Квас        \    -          \           -   \    -        \   +          \

Вода        \ -            \       +        \    -       \     -        \

ответ: молоко в кувшине, лимонад в бутылке, квас в банке, вода в стакане.

КОНЕЦ.

 

 

 

 

Ответить на вопрос

Поделитесь своими знаниями, ответьте на вопрос:

Найти все элементы массива равные х, используя бинарный поиск. х вводится с клавиатуры , на паскале, методом " поиск элементов в одномерном массиве".
Ваше имя (никнейм)*
Email*
Комментарий*

Популярные вопросы в разделе

Sergei_Olga658
gsktae7
Donleksa2016
Ryazanova1575
aleksey7800
makitra08
mpityk
basil69
Puschdom
BelyaevNadezhda223
dilovarnazarov1986
Veronika1270
Bogdanov
natkoff5
cometa94558