Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
1 / 1 / 1
Регистрация: 24.07.2017
Сообщений: 39
1

Методом бинарного поиска определить, содержит ли массив заданное число. Если элемент найден, то удалить его из массива

16.12.2018, 20:58. Просмотров 1663. Ответов 6
Метки нет (Все метки)

Сформировать массив А[1..12], упорядоченный по возрастанию. Методом бинарного поиска определить, содержит ли он заданное число. Если элемент найден, то удалить его из массива.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.12.2018, 20:58
Ответы с готовыми решениями:

Методом бинарного поиска определить, содержит ли массив заданное число и удалить его
2. Сформировать массив а, упорядоченный по возрастанию. Методом бинарного поиска определить,...

Определить, содержит ли массив заданное число. Если элемент не найден, то вставить его в конец массива
Если массив данных неупорядочен, то для поиска нужного элемента можно применить метод линейного...

Определить методом бинарного поиска, содержит ли массив заданное число
Сформировать массив a, упорядоченный по возрастанию. Определить, содержит ли он заданное число...

Методом бинарного поиска определить, содержит ли упорядоченный массив заданное число
Сформировать массив а, упорядоченный по возрастанию. Методом бинарного поиска определить, содержит...

6
4033 / 1884 / 2014
Регистрация: 10.12.2014
Сообщений: 7,299
17.12.2018, 10:05 2
Аналогично: https://www.cyberforum.ru/post13166669.html
0
1 / 1 / 1
Регистрация: 24.07.2017
Сообщений: 39
18.12.2018, 20:42  [ТС] 3
JuriiMW, Там "Сформировать массив А[1..10], упорядоченный по убыванию. Методом бинарного поиска определить, содержит ли он заданное число. Если элемент не найден, то вставить его в массив на второе место.". А тут "Сформировать массив А[1..12], упорядоченный по возрастанию. Методом бинарного поиска определить, содержит ли он заданное число. Если элемент найден, то удалить его из массива."
0
4033 / 1884 / 2014
Регистрация: 10.12.2014
Сообщений: 7,299
19.12.2018, 05:24 4
Цитата Сообщение от AnyM0re Посмотреть сообщение
то удалить его из массива.
А чем дырку то залатать?
0
1 / 1 / 1
Регистрация: 24.07.2017
Сообщений: 39
21.12.2018, 21:15  [ТС] 5
Цитата Сообщение от JuriiMW Посмотреть сообщение
А чем дырку то залатать?
Не много не понял суть вопроса
0
Модератор
7925 / 3978 / 2791
Регистрация: 17.08.2012
Сообщений: 12,704
28.12.2018, 10:01 6
Лучший ответ Сообщение было отмечено AnyM0re как решение

Решение

JuriiMW, нужно уменьшить длину массива, я так понимаю.
Цитата Сообщение от AnyM0re Посмотреть сообщение
по возрастанию
То есть, массив должен состоять из уникальных элементов, иначе упорядочить его по возрастанию невозможно.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
const
  m = 12;
 
var
  a: array[1..m] of integer;
  i, j, k, n, t, s, d, e: integer;
  found: boolean;
 
begin
  randomize;
  for i := 1 to m do //формирование массива из уникальных чисел
    repeat
      a[i] := -99 + random(199);
      found := false;
      for j := 1 to i - 1 do
        begin
          found := a[j] = a[i];
          if found then break
        end
    until not found;
  for i := 1 to m - 1 do //сортировка по возрастанию
    begin
      k := i;
      for j := i + 1 to m do if a[j] < a[k] then k := j;
      if k > i then
        begin
          t := a[i];
          a[i] := a[k];
          a[k] := t
        end
    end;
  writeln('Source array:'); //печать исходного массива
  for i := 1 to m do write(a[i]:4);
  writeln;
  write('n = '); //ввод числа
  readln(n);
  s := 1; //бинарный поиск
  e := m;
  repeat
    d := s + e;
    d:= d div 2 + d mod 2;
    if n < a[d]
      then e := d - 1
      else s := d
  until e = s;
  if n = a[s] then //если элемент найден, то 
    begin
      for i := s to m - 1 do a[i] := a[i + 1]; //удаляем элемента со сдвигом
      writeln('Result:'); //печатаем массив
      for i := 1 to m - 1 do write(a[i]:4)
    end
  else write(n, ' not found'); //если элемент не найден, то выводим сообщение об этом
  readln
end.
1
Модератор
Эксперт Pascal/DelphiЭксперт NIX
5597 / 3328 / 2407
Регистрация: 22.11.2013
Сообщений: 9,382
28.12.2018, 11:51 7
Cyborg Drone,
вместо 10-31 можно было обойтись тривиальным:
Pascal
10
  for i:=1 to m do a[i]:=i;
Добавлено через 4 минуты
40-41: это, если правильно путаю
Pascal
40
  d := (s + e + 1) div 2;
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.12.2018, 11:51

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Массив: Определить методом бинарного поиска, содержит ли массив заданное число...
формировать массив элементы которого выбираются случайно из интервала определить методом бинарного...

Сформировать упорядоченный массив из 20 элементов. Методом бинарного поиска определить, содержит ли он заданное число
нужна полная программа. Сформировать массив а, упорядоченный по возрастанию. Методом бинарного...

Методом бинарного поиска определить, содержит ли он заданное число
Помогите составить блок схему для задачки. Сформировать массив А, упорядоченный по возрастанию....

Методом бинарного поиска определить, содержит ли файл заданное число
Условие: Сформировать массив а, упорядоченный по возрастанию. Методом бинарного поиска...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.