Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/37: Рейтинг темы: голосов - 37, средняя оценка - 4.57
0 / 0 / 0
Регистрация: 12.01.2010
Сообщений: 5

Поиск элемента в массиве методом дихотомии

12.01.2010, 15:04. Показов 7896. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
поиск элемента в массиве методом дихотомии


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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
program prg5;
uses crt;
type TMatrix=array[1..15,1..15]of integer;
procedure InputMatrix(var a:tMatrix;m,n:byte);
   var i,j:byte;
       q:char;
   begin
   Writeln('Input by hand?(y/n)');
   Readln(q);
   Randomize;
   for i:=1 to m do
      for j:=1 to n do
      if (q<>'y')and(q<>'Y')then
      a[i,j]:=random(99)
      else begin
      write('A[',i,',',j,']=');readln(a[i,j]);
      end;
   end;
procedure OutputMatrix(const a:TMatrix;m,n:byte);
   var i,j:byte;
   begin
   for i:=1 to m do
       begin for j:=1 to n do
       write(a[i,j]:4);
       writeln;end;
   end;
procedure MinMax(const a:TMatrix;m,n,i:byte;var j1,j2:byte);
   var j:byte;
       Min,Max:integer;
   begin
   j1:=1;j2:=1;
   Min:=a[i,1];Max:=a[i,1];
   for j:=1 to n do
       begin
       if a[i,j]<min then begin min:=a[i,j]; j1:=j end;
       if a[i,j]>max then begin max:=a[i,j]; j2:=j end;
       end;
   if j1>j2 then begin
       j:=j1; j1:=j2; j2:=j end;
   end;
procedure Sort(var a:TMatrix;m,n,l,j1,j2:byte);
   var i,j:byte;b:integer;
   begin
   for i:=j2 downto j1 do
       begin
       b:=a[l,i];
       j:=i;
       while (a[l,j+1]>b)and(j<j2)do
             begin
             a[l,j]:=a[l,j+1];
             j:=j+1;
             end;
       a[l,j]:=b;
       end;
   end;
procedure Main(var a:tmatrix;m,n:byte);
   var i,j,j1,j2:byte;
   begin
   for i:=1 to m do begin
   MinMax(a,m,n,i,j1,j2);
   Sort(a,m,n,i,j1,j2); end;
   end;
var Matrix:TMatrix;
    m,n:byte;
begin
     clrscr;
     write('m=');readln(m);
     write('n=');readln(n);
     InputMatrix(Matrix,m,n);
     OutPutMatrix(Matrix,m,n);
     Main(Matrix,m,n);
     writeln('Result:');
     OutPutMatrix(Matrix,m,n);
 
     readln;
end.


тут у меня сортировка масивов мнтодом прямого включение, нужно добавить поиск элемента методом дихотомии, а вот как я не наю(((( помогите пожалуйстооо!!!)
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
12.01.2010, 15:04
Ответы с готовыми решениями:

Поиск максимумов функции методом дихотомии
помогите плз за4етное задание поиск максимумов функции(какойнибудь простенькой на ваш выбор)...

Решение уравнения методом хорд, дихотомии, Ньютона
решить методом дихотомии, хорд, и методом ньютона ур-е cos(x)=1/x на интервале от 0 до pi/2 знаю,...

Сортировка массива методом дихотомии
Нужна процедура сортировки массива по убыванию методом деления пополам (метод бинарной вставки,...

9
1916 / 1066 / 384
Регистрация: 06.12.2008
Сообщений: 2,802
12.01.2010, 18:48
дихотомический поиск по близости, совпадению,интервалу?
0
0 / 0 / 0
Регистрация: 12.01.2010
Сообщений: 5
13.01.2010, 00:07  [ТС]
мммм... учитель сказал поиск элемента методом дихотомии и всё.... я точно не знаю что именно...
0
Платежеспособный зверь
 Аватар для кот Бегемот
8966 / 4389 / 1655
Регистрация: 28.10.2009
Сообщений: 11,647
13.01.2010, 14:10
Дихотомия - метод половинного деления
0
Тимуровец
 Аватар для Страдалецъ
445 / 285 / 50
Регистрация: 10.09.2009
Сообщений: 963
13.01.2010, 14:52
Если конечно я ничего не путаю, то сия штука работатет только с последовательно убывающим или возрастающим списком. Если элементы идут в перемешку, то не будет работать. Выгодно соответственно использовать этот вид поиска только на уже отсортированном массиве.
Поэтому задача состоит из 2 частей.
1. Сортировка списка
2. Собственно поиск.
Поиск идет так:
Если скажем список отсортирован по возрастанию, то берется элемент из середины списка и сравнивается с искомым значением. Если элемент меньше, то отбрасываются все элементы списка до середины, если больше то после середины. Операция повторяется с уполовиненным списком до победы. Даже на очень больших списках работает очень быстро.
0
0 / 0 / 0
Регистрация: 12.01.2010
Сообщений: 5
13.01.2010, 21:19  [ТС]
вот вот, это то я знаю, как оно работает, но не могу толком написать в свою прогу... уже 2й день мозг убиваю...
0
1916 / 1066 / 384
Регистрация: 06.12.2008
Сообщений: 2,802
13.01.2010, 21:52
вот я вам написал прогу, которая ищет элемент, вводите значение, она выводит индекс найденного элемента!Ну а как уже вставить вам в программу думайте сами!
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
uses crt;
var a:array[1..20] of integer;
    ng,vg,i,j,n,key,k,x:integer;
    f1:boolean;
begin
ClrScr;
Randomize;
Write('n=');
Readln(n);
for i:=1 to n do
 begin
  a[i]:=random(20);
  Write(a[i]:4);
 end;
Writeln;
for i:=1 to n do
for j:=1 to n do
 if a[i]<a[j] then
  begin
   x:=a[i];
   a[i]:=a[j];
   a[j]:=x;
  end;
for i:=1 to n do
 Write(a[i]:4);
Writeln;
ng:=1;
vg:=n;
f1:=false;
k:=0;
Writeln('Key ');
Readln(key);
while (ng<=vg) and not f1 do
 begin
  i:=(ng+vg) div 2;
  if key<a[i] then
   vg:=i-1
  else
   if key>a[i] then
    ng:=i+1
   else
    begin
     f1:=true;
     k:=i;
    end
 end;
Writeln('K= ',k);
Readln;
end.
0
0 / 0 / 0
Регистрация: 12.01.2010
Сообщений: 5
14.01.2010, 17:56  [ТС]
товарищи, сидел 2 часа с другом, раздуплялись в этой проге... прогу снупа мы в итоге так и не поняли... уважаемый снуп, пожалуйста напиши прогу именно к моей, ибо я тупень и не понимаю.....
0
3318 / 1380 / 110
Регистрация: 28.04.2009
Сообщений: 4,822
14.01.2010, 18:01
Silence1, вашу сложнее понять. А уважаемого Snoopy все легко читается и понимается.
0
0 / 0 / 0
Регистрация: 12.01.2010
Сообщений: 5
14.01.2010, 18:22  [ТС]
это то я знаю... если вам так не сложно, тогда попробуйте сделать сортировку массива методом прямого включения к этой програмке... очень надо, не хватает 9 баллов к допуску на сессию... если сдам эту лабу, всё будет прекрасно, помогите молодому специалисту^_^
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
14.01.2010, 18:22
Помогаю со студенческими работами здесь

Вычислить корни трансцендентного ( нелинейного ) уравнения методом половинного деления ( бисекции, дихотомии).
Вычислить корни трансцендентного ( нелинейного ) уравнения методом половинного деления ( бисекции,...

Уточнение корней методом половинного деления (дихотомии)
Помогите, пожалуйста, решить задачку в Паскале, сдавать через 2 дня!!! Выполните отделение...

Решение уравнения методом дихотомии
Выполните * отделение * корней * уравнения * с * * использованием * графической * оценки.*...

Найти корень уравнения методом дихотомии.
вычислить корень уравнения на отрезке с точностью 0,001 Методом Дихотомии (половинного деления)...

Решение уравнения методом дихотомии
Решение уравнения методом дихотомии. На этапе отделения корней берутся диапазон возможного...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru