Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
bLesk
41 / 41 / 1
Регистрация: 24.11.2009
Сообщений: 165
#1

бинарный поиск, для char - C++

07.12.2010, 16:39. Просмотров 817. Ответов 0
Метки нет (Все метки)

всем привет! Не подскажете как реализовать метод бинарного поиска для поля записи(я использую массив записей), если тип данных char ? пробывал несколько вариантов, компилировалось без проблем, а вот ищет не корректно =( Надеюсь поможете! Всем заранее спасибо

Добавлено через 23 часа 0 минут
ну что никто не может помочь?

Добавлено через 42 минуты
вот в общем что смог сделать я:

C++
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
void bin ()
{
        cout<<"\n OLD ARRAY ";
        for (int i=0;i<n;i++)
          {
             if (*data[i].name)
              {
                cout <<"\n Surname : "<<data[i].name;
                cout <<"\n Age : "<<data[i].age;
              }
          }
        int tmp;
        char temp[20];
        for (int i=1; i < n; i++)
          for (int j=0; j < n-1; j++)
            if ((int)data[j].name[1] > (int)data[j+1].name[1])
            {
              strcpy(temp , data[j].name);
              strcpy(data[j].name , data[j+1].name);
              strcpy(data[j+1].name , temp);
              tmp = data[j].age;
              data[j].age = data[j+1].age;
              data[j+1].age = tmp;
            }
        cout<<"\n NEW  ARRAY ";
        for (int i=0;i<n;i++)
          {
             if (*data[i].name)
                {
                  cout <<"\n Surname : "<<data[i].name;
                  cout <<"\n Age : "<<data[i].age;
                }
          }
  int first = 0;
  int last = 7;
 
  char pois[20];
  cout<<"\n Enter element,which you want to find(binnary serach) : ";
  cin>>pois;
  while ( first < last ) {
    int mid = ( first + last ) / 2;
    if ( pois[1] <= data[mid].name[1] ) {
      last = mid;
    } else {
      first = mid + 1;
    }
  }
  if ( (strcmp(pois,data[last].name )))
  {
    cout <<"\n Number of element : "<<last+1;
  }
  else  cout<<"\n  Element not founded:(";
}
только сортирует не верно, если сделать сортировку по возрасту то сортировка работает (у меня в записи поле char и поле int)

мне кажется что что-то не так в этом месте

C++
1
if ((int)data[j].name[1] > (int)data[j+1].name[1])
как можно сравнивать два символа типа char - какой больше, а какой меньше?

Добавлено через 2 минуты
запись такая
C++
1
2
3
4
5
6
int const n=8;
 
struct record {
    char name[20];
    int age;
}data[n];
Добавлено через 16 минут
исправил, нужно было делать так:

C++
1
if (strcmp(data[j].name , data[j+1].name) >0 )
всем спасибо, за ничто
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.12.2010, 16:39
Здравствуйте! Я подобрал для вас темы с ответами на вопрос бинарный поиск, для char (C++):

Бинарный поиск для std::list - C++
Здравствуйте. Хотел написать бинарный поиск для std::list. Пишу: //Тип coord определён выше std::list&lt;coord&gt;::iterator...

Бинарный поиск для нахождения количества повторяющихся элементов - C++
Здравствуйте. Стоит следующая несложная задача: Дан массив (отсортированный). Например 1 1 1 4 5 6 6 6 6 6 6 6 При вводе...

Поиск по классу с полями char* для массива обьектов class a[i] - C++
Есть класс: aero.h #ifndef AERO_H #define AERO_H #include &lt;string&gt; using namespace std; class aero

Поиск числа в двумерном массиве (бинарный поиск) - C++
Произвожу поиск элемента в массиве двумя способами: линейным(последовательным) поиском и бинарным(двоичным). Первый работает на ура. Второй...

Запись структуры (в ней есть поля типа данных char*) в бинарный файл - C++
Всем привет! Есть такая структура: struct Telem { int key; char *mark; float engine; char *color; }; В функции main()...

Бинарный поиск - C++
#include &lt;iostream&gt; #include &lt;fstream&gt; #include &lt;algorithm&gt; #include &lt;string&gt; #include &lt;vector&gt; using namespace std; ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.12.2010, 16:39
Привет! Вот еще темы с ответами:

Бинарный поиск - C++
Реализуйте алгоритм бинарного поиска. Входные данные В первой строке входных данных содержатся натуральные числа N и K . Во второй...

Бинарный поиск - C++
Здравствуйте, помогите пожалуйста написать бинарный поиск одного элемента, текст читается из файла. Лабу сдавать в понедельник а я не знаю...

Бинарный поиск - C++
за какое время работает бинарный поиск?

Бинарный поиск - C++
помоги мне плиз ответить на вопросы Бинарный поиск #include &lt;iostream&gt; using namespace std; int BinSearch(int *M, int n,...


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

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

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