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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.60
NNN7
7 / 7 / 3
Регистрация: 05.09.2013
Сообщений: 502
#1

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

30.09.2013, 20:18. Просмотров 1513. Ответов 2
Метки нет (Все метки)

Здравствуйте!
Помогите , пожалуйста , разобраться с поиском .
Вот я создаю структуру :
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++
Подскажите пожалуйста ,что нужно сделать для реализации линейного поиска в данном массиве? Буду очень признателен. #include...

Линейный поиск в массиве структуры - 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
Сообщений: 502
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

Совсем запутался уже(
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.09.2013, 21:27
Привет! Вот еще темы с ответами:

Поиск в массиве структур. - C++
Кто может,пожалуйста,гляньте. Вот мой массив: #include &lt;iostream.h&gt; #include &lt;conio.h&gt; #include &lt;stdio.h&gt; #include &lt;string.h&gt; ...

Поиск в отсортированном массиве структур - C++
Всем привет, пожалуйста помогите с поиском в отсортированном массиве структур. Нужно найти абитуриента со средним баллом 287 ( .ball )....

Поиск ключу в одномерном массиве структур - C++
Найти сотрудника, работающего с 1975 года.

Интерполирующий поиск в массиве структур типа char - C++
Добрый вечер, дано задание сделать Интерполирующий поиск в массиве структур по полю char типа. Возможно ли вообще использовать...


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

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

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