Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 29.03.2013
Сообщений: 6
1

Найти номер элемента вектора, совпадающего с заданным целым X. Дихотомия.

29.03.2013, 16:28. Просмотров 1095. Ответов 1
Метки нет (Все метки)

Пусть элементы целочисленного вектора A длины n упорядочены по возрастанию. Найти номер элемента, совпадающего с заданным целым x . При решении задачи использовать метод деления пополам – дихотомию. Идея метода состоит в следующем. Делим вектор A пополам и сравниваем средний элемент A с x , если они совпадают, то решение найдено и процесс останавливается. Если средний элемент больше, чем x , то в силу упорядоченности A значение x не может содержаться в правой половине A, так что мы можем продолжать процесс, применяя его к левой половине вектора A. Аналогично, если средний элемент меньше, чем x, нужно продолжать поиск значений в правой половине вектора A. Затем процесс деления продолжается.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.03.2013, 16:28
Ответы с готовыми решениями:

Функция возвращающая номер последнего элемента массива совпадающего с заданным числом
Написать и протестировать функцию, возвращающую номер самого последнего элемента из массива,...

Найти номер максимального элемента вектора
1)Дан вектор Xi,где i=1..n. Найти номер максимального элемента вектора. Желательно через цикл...

Найти номер максимального элемента вектора. Желательно через цикл
MathcadPrime 2.0 (или другой...)

Массив:Найти номер первого отрицательного элемента вектора и сумму предшествующих ему элементов
Дан вектор действительных чисел Y(y1,y2,..,y8).Найти номер первого отрицательного элемента ...

1
3940 / 1865 / 337
Регистрация: 16.03.2012
Сообщений: 3,880
29.03.2013, 19:34 2
Лучший ответ Сообщение было отмечено IrinaGaleeva как решение

Решение

Delphi
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
procedure TForm1.Button1Click(Sender: TObject);
Var
  i,i_n,i_k : Integer;
  find : Boolean;
  x : Integer;
  s : String;
  A : Array of Integer;
begin
  //Получим значения вектора...
  s:=Edit1.Text+' ';
  SetLength(A,0);
  i:=1;
  While Length(s)<>0 Do
  If s[i]=' ' Then
  If i=1 Then Delete(s,1,1) Else
  Begin
    SetLength(A,Length(A)+1);
    A[High(A)]:=StrToInt(Copy(s,1,i-1));
    Delete(s,1,i);
    i:=1;
  End Else Inc(i);
 
  x:=StrToInt(Edit2.Text); //Значение для поиска...
 
  //Поиск искомого значения...
  i_n:=Low(A);
  i_k:=High(A);
  find:=False;
  While True Do
  Begin
    i:=(i_k+i_n) Div 2;
    If x=A[i] Then
    Begin
      find:=True;
      Break;
    End Else
    If i_k=i_n Then Break;
 
    If x>A[i] Then
    Begin
      If i_n<>i Then
      i_n:=i Else i_n:=i_n+1;
    End Else
    Begin
      If i_k<>i Then
      i_k:=i Else i_k:=i_k-1;
    End;
  End;
  If find Then
  ShowMessage('Индекс найденного элемента '+IntToStr(i)) Else
  ShowMessage('Элемент не найден!!');
end;
В Edit1 - значения элементов вектора, разделённые пробелами. В Edit2 - значение для поиска. По клику на кнопке выполняется занесение элементов вектора в динамический массив и поиск заданного значения. Поскольку массив динамический - индексация начинается с 0.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.03.2013, 19:34

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

Массив:Найти номер первого отрицательного элемента вектора и сумму предшествующих ему элементов
Дан вектор действительных чисел Y(y1,y2,..,y8).Найти номер первого отрицательного элемента вектора...

Определить для заданных векторов длину каждого вектора и найти номер самого длинного вектора
Создайте структуру Вектор с элементами x, y, z – декартовые координаты. Определить для M заданных...

Найти произведение максимального элемента вектора X на минимальный элемент вектора Y.
Задать вектор X, элементы которого представляют собой арифметическую последовательность от pi/16 ...

Вывести номер элемента вектора по его значению
у меня ест вектор и надо если я написал написал seven на экран должен выйти 7 (индекс вектра) и...


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

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

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