Форум программистов, компьютерный форум, киберфорум
Pascal ABC
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 14.04.2015
Сообщений: 2

Бинарный поиск - найти ошибку в коде

23.04.2015, 19:19. Показов 777. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите пожалуйста найти ошибку
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
program BinSearch;
uses crt;
const m= 4; n = 4;
  type Arr=array[1 .. m, 1 .. n] of integer;
 var k,b,e, x, i,j: integer;
 A:Arr;
{äâîè÷íûé ïîèñê}
 function BinarySearch(A: Arr; key: integer): integer;
 begin
  b:= 1;  { èíäåêñ ïåðâîãî ýëåìåíòà ìàññèâà }
e:= n*m;  {e - èíäåêñ ïîñëåäíåãî ýëåìåíòà, ãäå nm = n*m, òî åñòü ðàçìåðíîñòü äâóìåðíîãî ìàññèâà  }
  while b <= e do begin
    { èùåì ýëåìåíò íà èíòåðâàëå èíäåêñîâ îò b äî n, âêëþ÷èòåëüíî }
    k := b + (e - b) div 2;  { Âîò k êàê ðàç îäíîìåðíî... À äàëüøå: }
    if x > A[(pred(k) div n) + 1, (pred(k) mod n) + 1] then { <--- Ïðåîáðàçóåì k â íîìåð ñòðîêè è ñòîëáöà }
      b := k + 1
    else if x < A[(pred(k) div n) + 1, (pred(k) mod n) + 1] then { <--- çäåñü - òîæå ñàìîå }
      e := k - 1
    else begin BinarySearch:=k;
exit;
end;
end;
BinarySearch:=-1;
end;
{îñíîâíîé áëîê ïðîãðàììû}
begin
randomize;
writeln('Èñõîäíûé ìàññèâ: ');
for i:=1 to m do
for j:=1 TO n DO
begin
A[i,j]:=random(10);
writeln ( 'A(', i, ',', j, ')=', a[i,j]);
    end;
writeln;
write('Èñêîìûé ýëåìåíò > ');
read(x);
if (BinarySearch(A, k)=-1) then write('Ýëåìåíò íå íàéäåí')
else write('Íîìåð ýëåìåíòà: ', BinarySearch(A, x));
end.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
23.04.2015, 19:19
Ответы с готовыми решениями:

Бинарный поиск (найти ошибку)
Есть задание: Совершить бинарный поиск заданного элемента в упорядоченном по возрастанию (спаданию) массиве целых чисел. Программа...

Двумерный массив. Поиск нулей.Не могу найти ошибку ошибку в коде
Вот,например массив 5 5 0 1 0 1 0 1 1 1 1 1 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 считываются два числа m и n и далее в выходной...

Поиск нулей в двумерном массиве. Не могу найти ошибку в коде
Дан двумерный массив. Заполнен единицами и нулями. Например такой: 0 0 1 1 1 0 1 1 1 Требуется вывести номер строки,где...

1
Модератор
Эксперт по электронике
 Аватар для ФедосеевПавел
8665 / 4502 / 1670
Регистрация: 01.02.2015
Сообщений: 13,928
Записей в блоге: 13
23.04.2015, 22:30
Исправление кодировки - копируем, вставляем в блокнот, сохраняем в кодировке iso8859-1, закрываем, открываем в кодировке ansi.
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
program BinSearch;
 
const
  m = 4;
  n = 4;
type
  Arr = array[1 .. m, 1 .. n] of integer;
var
  k, b, e, x, i, j: integer;
  A: Arr;
 
  {двоичный поиск}
  function BinarySearch(A: Arr; key: integer): integer;
  begin
    b := 1; { индекс первого элемента массива }
    e := n * m; {e - индекс последнего элемента, где nm = n*m, то есть размерность двумерного массива }
    while b <= e do
    begin
      { ищем элемент на интервале индексов от b до n, включительно }
      k := b + (e - b) div 2; { Вот k как раз одномерно... А дальше: }
      if x > A[(pred(k) div n) + 1, (pred(k) mod n) + 1] then
        { <--- Преобразуем k в номер строки и столбца }
        b := k + 1
      else if x < A[(pred(k) div n) + 1, (pred(k) mod n) + 1] then { <--- здесь - тоже самое }
        e := k - 1
      else
      begin
        BinarySearch := k;
        exit;
      end;
    end;
    BinarySearch := -1;
  end;
 
  {основной блок программы}
begin
  randomize;
  writeln('Исходный массив: ');
  for i := 1 to m do
    for j := 1 to n do
    begin
      A[i, j] := random(10);
      writeln('A(', i, ',', j, ')=', a[i, j]);
    end;
  writeln;
  Write('Искомый элемент > ');
  Read(x);
  if (BinarySearch(A, k) = -1) then
    Write('Элемент не найден')
  else
    Write('Номер элемента: ', BinarySearch(A, x));
end.
Здесь логическая ошибка - бинарный поиск применим ТОЛЬКО К УПОРЯДОЧЕННЫМ массивам. Перед поиском отсортируй массив (матрицу как массив).
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
23.04.2015, 22:30
Помогаю со студенческими работами здесь

Найти ошибку в коде
procedure form_menu; var i:byte; sizeof:integer; begin ramka(x,y,Size Of menu(+2),(n+2),colt,colt); gotoxy(2,2); ...

Найти ошибку в коде
Цель программы, она должна создавать текстовый файл, потом спрашивает сколько хотите ввести строк - мы их вводим, а потом найти минимально...

Найти ошибку в коде.
проверьте задачу!!! не могу найти ошибку var a,x,i1,i2:Integer; begin Writeln('Enter A'); Readln(a);

Найти ошибку в коде
uses crt; const m=10; label met; var c:char; f,dt:text; k,i,j,z,b:byte; a:array of real; procedure keyboard; begin

Найти ошибку в коде
Всем привет, помогите найти ошибку в коде программы, компилятор выводит операнды имеют неправдивые типы, заранее благодарен {Вычислить...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru