1 / 1 / 0
Регистрация: 25.04.2015
Сообщений: 41
1

Бинарный (двоичный) поиск по алфавиту в упорядоченном массиве структур

01.07.2015, 18:26. Показов 3734. Ответов 5
Метки нет (Все метки)

Приветствую товарищей-программистов!

Есть массив структур StructWords massiv[150].
C++
1
2
3
4
5
struct StructWords
{
char Word[32];
//другие данные
};
Массив структур отсортирован по алфавиту по char Word[32] (помучался с сортировкой, но сделал).
Беда вот в чём. Ввожу слово в консоли, это слово есть в массиве структур (даже по несколько раз), его надо найти в массиве структур. Как ни пытался, не получается создать бинарный поиск для этого массива структур.
Прошу помочь, ибо идей больше нет.
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.07.2015, 18:26
Ответы с готовыми решениями:

Двоичный поиск в упорядоченном массиве
Дан упорядоченный по неубыванию целочисленный массив и набор чисел ki. Требуется для каждого числа...

Бинарный поиск в упорядоченном массиве
Задали реализовать бинарный поиск в упорядоченном массиве.Уже пол дня творю,3 листа исписал и...

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

Бинарный поиск числа в упорядоченном массиве
В упорядоченном массиве надо найти число. Программа должна выполняться с рекурсией

5
2756 / 1910 / 569
Регистрация: 05.06.2014
Сообщений: 5,560
01.07.2015, 19:10 2
C++
1
2
3
4
5
6
7
struct StructWords
{
   char Word[32];
   bool operator<(const StructWords&value)const{return strcmp(Word,value.Word)<0;}
   bool operator>(const StructWords&value)const{return strcmp(Word,value.Word)>0;}
   bool operator==(const StructWords&value)const{return strcmp(Word,value.Word)==0;}
};
Дальше сравниваете объекты StructWords точно также как числа (if(A<B)...). Для чисел то вы бинарный поиск и сортировку написать можете? Ну вот берете готовый код для чисел и меняете числа на StructWords.
0
1 / 1 / 0
Регистрация: 25.04.2015
Сообщений: 41
01.07.2015, 19:21  [ТС] 3
Пытался так же делать без перегрузки операторов, всё время получалось, что элемент не найден. И сейчас тоже.
Что-то я не то делаю...
К примеру реализация с помощью перегрузки операторов.
C++
1
2
3
4
5
6
7
8
9
10
11
12
int BinarySearch(char * key)
        {
            int left = 0, right = 150, mid;
            while (left <= right)
            {
                mid = left + (right - left) / 2;
                if (key < massiv[mid].Word) right = mid - 1;
                else if (key > massiv[mid].Word) left = mid + 1;
                else return mid;
            }
            return -1;
        }
Тот же самый эффект - возвращает -1.
0
2756 / 1910 / 569
Регистрация: 05.06.2014
Сообщений: 5,560
01.07.2015, 20:00 4
Цитата Сообщение от Novichock123 Посмотреть сообщение
if (key < massiv[mid].Word)
У вас key - C (без плюсов) строка. Она в правильный < не умеет. Нужно вместо char*key использовать const std::string&key.
0
1 / 1 / 0
Регистрация: 25.04.2015
Сообщений: 41
01.07.2015, 20:09  [ТС] 5
Так если я вместо char*key подставлю const std::string&key в принимающие значения, то ничего не изменится.
Если в структуре char*key заменю на const std::string&key , то ругаться будет везде, где есть strcmp, stcpy.
0
2756 / 1910 / 569
Регистрация: 05.06.2014
Сообщений: 5,560
01.07.2015, 20:20 6
strcmp(A,B) надо менять на A<B (A>B, A==B), strcpy(A,B) на A=B, а в структуру ставить string Word (без &).
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.07.2015, 20:20
Помогаю со студенческими работами здесь

Бинарный поиск числа в упорядоченном массиве
Написать бинарный поиск искомого числа(введенного пользователем) в отсортированном массиве....

Бинарный поиск в упорядоченном по возрастанию массиве
9 лаб.работа Бинарный поиск в упорядоченном по возрастанию массиве

Рекурсия: бинарный поиск в упорядоченном массиве
Найти в упорядоченном массиве заданный элемент методом деления массива пополам (бинарный поиск)....

В одномерном массиве состоящем из n вещественных элементов сделать бинарный поиск числа А в упорядоченном массиве
Всем привет помогите решить задачи 1) В одномерном массиве состоящем из n вещественных элементов:...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru