Умоляю с по заполнить массив случайными числами, отсортировать его. ввести х, используя двоичный поиск определить есть ли в массиве число равное х посчитать количество сравнений на языке pascal! с понятным решением без tarray и логических функций!
174
395
Ответы на вопрос:
Const n = 20; var a: array[1..n] of integer; i,j,k,m,li,ri,mi,s,x: integer; begin write('введите ключ поиска (0-49): '); read(x); { заполнить массив значениями } randomize; writeln('элементы массива'); for i : = 1 to n do begin a[i] : = random(50); write(a[i]: 3); end; writeln; { сортировка } for i : = 1 to n-1 do for j : = 1 to n-i do if a[j] > a[j+1] then begin s : = a[j]; a[j] : = a[j+1]; a[j+1] : = s end; writeln('отсортированный по возрастанию массив'); for i : = 1 to n do write(a[i]: 3); writeln; { бинарный поиск } li: =1; ri: =n; k: =0; while li< ri do begin mi: =(li+ri) div 2; if a[mi]< x then li: =mi+1 else ri: =mi; inc(k) end; if a[ri]=x then m: =ri else m: =0; { вывод результатов } if m> 0 then writeln('найден элемент № ',m,'; число шагов равно ',k) else writeln('такого элемента в массиве нет'); end. тестовое решение: введите ключ поиска (0-49): 25 элементы массива 33 47 1 28 31 36 15 25 49 35 30 48 24 0 39 35 7 20 25 0 отсортированный по возрастанию массив 0 0 1 7 15 20 24 25 25 28 30 31 33 35 35 36 39 47 48 49 найден элемент № 8; число шагов равно 4 вариант с процедурами const n = 20; type v=array[1..n] of integer; procedure sortbyselect(var a: v); {сортировка выбором} var i, j, k: integer; x: integer; begin for i : = 1 to n do begin k : = i; x : = a[i]; for j : = i+1 to n do if a[j]< x then begin k : = j; x : = a[j] end; a[k] : = a[i]; a[i] : = x end end; procedure binsearch(var a: v; key: integer; var k,m: integer); var li,ri,mi: integer; begin li: =1; ri: =n; k: =0; while li< ri do begin mi: =(li+ri) div 2; if a[mi]< key then li: =mi+1 else ri: =mi; inc(k) end; if a[ri]=key then m: =ri else m: =-1 end; var a: v; i,k,m,x: integer; begin write('введите ключ поиска (0-49): '); read(x); { заполнить массив значениями } randomize; writeln('элементы массива'); for i : = 1 to n do begin a[i] : = random(50); write(a[i]: 3); end; writeln; sortbyselect(a); { сортировка выбором } writeln('отсортированный по возрастанию массив'); for i : = 1 to n do write(a[i]: 3); writeln; binsearch(a,x,k,m); { бинарный поиск } if m> 0 then writeln('найден элемент № ',m,'; число шагов равно ',k) else writeln('такого элемента в массиве нет'); end. тестовое решение: введите ключ поиска (0-49): 32 элементы массива 46 24 32 32 23 32 4 26 47 4 44 8 39 8 15 39 11 45 5 16 отсортированный по возрастанию массив 4 4 5 8 8 11 15 16 23 24 26 32 32 32 39 39 44 45 46 47 найден элемент № 12; число шагов равно 5
Реши свою проблему, спроси otvet5GPT
-
Быстро
Мгновенный ответ на твой вопрос -
Точно
Бот обладает знаниями во всех сферах -
Бесплатно
Задай вопрос и получи ответ бесплатно
Популярно: Информатика
-
2o2o24.12.2021 06:38
-
Nikanikansjs31.12.2020 02:34
-
aryka217.11.2020 21:57
-
karpovaarina27.10.2021 23:08
-
tseykalo1813.10.2021 18:49
-
silenceeee28.08.2020 02:57
-
0667543784u76ju08.11.2022 21:41
-
0Mishaj20.04.2022 11:28
-
kirpol83p01doz20.01.2023 07:50
-
emerenkova128.07.2022 15:03
Есть вопросы?
-
Как otvet5GPT работает?
otvet5GPT использует большую языковую модель вместе с базой данных GPT для обеспечения высококачественных образовательных результатов. otvet5GPT действует как доступный академический ресурс вне класса. -
Сколько это стоит?
Проект находиться на стадии тестирования и все услуги бесплатны. -
Могу ли я использовать otvet5GPT в школе?
Конечно! Нейросеть может помочь вам делать конспекты лекций, придумывать идеи в классе и многое другое! -
В чем отличия от ChatGPT?
otvet5GPT черпает академические источники из собственной базы данных и предназначен специально для студентов. otvet5GPT также адаптируется к вашему стилю письма, предоставляя ряд образовательных инструментов, предназначенных для улучшения обучения.