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

Линейный поиск с барьером в массиве структур (С++) - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.60
NNN7
7 / 7 / 3
Регистрация: 05.09.2013
Сообщений: 503
30.09.2013, 20:18     Линейный поиск с барьером в массиве структур (С++) #1
Здравствуйте!
Помогите , пожалуйста , разобраться с поиском .
Вот я создаю структуру :
C++
1
2
3
4
5
6
7
struct D    //описываемая струтура
{
    int m;
    int y;
    int d;
        int find;  //элемент , который записывается в массив структур пользователем как ключ
};
Дальше в главной функции :
C++
1
2
3
4
5
6
7
8
9
10
11
int N;   //создаём массив структур из N элементов
Data *ob1;  //указатель на структуру 
cout<<"\n Enter N:";
cin>>N;
ob1=new Data[N];  //выделение памяти под массив структур
Get(ob1,N);          //функция ввода данных массива структур 
Show(ob1,N);       //функция вывода на экран
int key;  //ключ
cout<<"Enter key:";
cin>>key;           //ввод ключа
delete[]ob1;      //освобождение памяти
Мне нужно организовать линейный поиск с барьером . Как я понимаю , то для этого нужно значения ключа(искомый элемент ) записать вконец массива структур , то есть в любом случае элемент будет в массиве структур , но как бы "искусственный , об этом оповещаем пользователю .

Я совсем не могу понять , как обращаться с массивом структур .
Пусть я создаю функцию поиска :
C++
1
2
3
4
int P(Data *ob1,int key,int N)   //передаю структуру, ключ, количество элементов в структуре
{  
 
}
Я не могу понять , как быть дальше . По идеи , нужно присвоить последнее поле массива структур(int find) ключу(key). А потом сравнивать : если элемент массива структур int find == ключу , то вернуть -1 , как знак того , что элемент такой не найден (найден только тот , что пользователь сам записал в структуру) .
Но у меня никак не получается это сделать(
Я так понимаю , что нужно key==ob1.[find] //прировнять вводимый ключ к полю массива структур

А что дальше делать ?
Помогите , пожалуйста , разобраться .
Если не с барьером , то хотя бы на примере простого линейного поиска , чтобы понять как хоть обходится с этими массивами структур .

Заранее огромное СПАСИБО за помощь !
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.09.2013, 20:18     Линейный поиск с барьером в массиве структур (С++)
Посмотрите здесь:

C++ поиск ключу в одномерном массиве структур
Поиск в массиве структур. C++
Линейный поиск в числовом массиве с барьером и без барьера по числовому ключу C++
Линейный поиск в массиве и списке C++
C++ Интерполирующий поиск в массиве структур типа char
C++ Поиск в отсортированном массиве структур
C++ Объяснить линейный поиск в массиве и сортировка массива
C++ Бинарный (двоичный) поиск по алфавиту в упорядоченном массиве структур

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
User409368
191 / 168 / 6
Регистрация: 09.09.2013
Сообщений: 524
30.09.2013, 20:45     Линейный поиск с барьером в массиве структур (С++) #2
может так?

C++
1
2
3
4
5
6
7
8
int P(Data *ob1,int key,int N)   //передаю структуру, ключ, количество элементов в структуре
{  
    for (int i=0; i<N; i++)
        if (obj[i].find == key)
            return i;
            
    return -1;  // не нашли
}
NNN7
7 / 7 / 3
Регистрация: 05.09.2013
Сообщений: 503
30.09.2013, 21:27  [ТС]     Линейный поиск с барьером в массиве структур (С++) #3
Цитата Сообщение от _ Посмотреть сообщение
может так?

C++
1
2
3
4
5
6
7
8
int P(Data *ob1,int key,int N)   //передаю структуру, ключ, количество элементов в структуре
{  
    for (int i=0; i<N; i++)
        if (obj[i].find == key)
            return i;
            
    return -1;  // не нашли
}
Так тоже неправильно . Нужно возвращать i , если элемент просто есть в списке , а если obj[i].find == key , то это уже -1.

Проблема в том , что я не могу понять ,как работать с ключом .
Вводим то мы по 3 элемента , а ключ записываем вообще в 4-ый . Получается , что мы его вообще найти не можем ?
И ещё , я не пойму , в какой именно элемент массива структур нужно вписывать ключ? key=ob1.[?].find

Совсем запутался уже(
Yandex
Объявления
30.09.2013, 21:27     Линейный поиск с барьером в массиве структур (С++)
Ответ Создать тему
Опции темы

Текущее время: 13:15. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru