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

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

Войти
Регистрация
Восстановить пароль
 
dopasdk
0 / 0 / 0
Регистрация: 10.01.2014
Сообщений: 2
#1

Данные о читателях должны быть организованны в виде хеш-таблицы - C++

10.01.2014, 21:22. Просмотров 415. Ответов 1
Метки нет (Все метки)

Данные о каждом читателе должны содержать:
№ читательского билета – строка формата «ANNNN-YY», где A – буква, обозначающая права доступа читателя (А – только абонемент, Ч – только читальный зал, В – читальный зал и абонемент), NNNN – порядковый номер регистрации (цифры), YY – последние две цифры номера года регистрации;
ФИО – строка;
Год рождения – целое;
Адрес – строка;
Место работы/учебы – строка.

Данные о читателях должны быть организованны в виде хеш-таблицы, первичным ключом которой является «№ читательского билета» Метод хеширования определяется вариантом задания.

Вопрос - я правильно представил ниже метод открытого хеширования?
Т.е. я представляю эти данные с помощью двумерного массива,где первый столбец это номер читательского билета
Из номера читательского билета Первичным ключом является только кусок - NNNN
Я ввожу к примеру 0003 и мой цикл пробегает по первому столбцу и останавливается на той строчке у которой NNNN = 0003 ,когда он ее найдет,он возвращает индекс этой строчки и по этому индексу я вывожу строчку с данными полного номера читательского билета и далее выводятся строчки столбцов ФИО ;Год рождения;Адрес ;Место работы/учебы по данному найденному индексу выше.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.01.2014, 21:22     Данные о читателях должны быть организованны в виде хеш-таблицы
Посмотрите здесь:

Конвертировать данные под разрядность хотя бы в 16 бит (переменные должны быть знаковыми и вещественными) - C++
Всем привет! Программирую один алгоритм, с типом переменных double, как известно double имеет разрядность 64 бита. Данный алгоритм...

Расчет сумм в формуле и расчет xi должны быть оформлены в виде отдельных функций. - C++
День добрый товарищи специалисты, помогите пожалуйста с примером m=((1/n)*\sum_{i=1}^{n}{x}_{i}){}^{2}-\sum_{i=1}^{n}{x}_{i} ,n=5 ф-ция...

я учусь на высшке на программиста.. какие могут быть задачи на экзамене 1й курс .2й семестр!!.. должны быть классы!! - C++
я учусь на высшке на программиста.. какие могут быть задачи на экзамене 1й курс .2й семестр!!.. должны быть классы!!.. например какие...

Вывести данные в виде таблицы - C++
Доброго времени суток! Необходимо данные вывести в виде таблицы. Я нарисовал таблицу и выровнял все столбики, кроме последнего( Может...

Вывести данные из файла в виде таблицы - C++
Помогите пожалуйста вывести данные из файла в виде таблице. Ввод сделал а вывод не получается. #include <iostream> #include...

Надо передать данные в виде таблицы - C++
Сделал некий ActiveX контрол в который надо передать данные в виде таблицы. То есть передать-то я их могу в любом виде но они должны...

Найти объём пирамиды, и вывести данные в виде таблицы - C++
Уважаемие, помогите новичку пожалуйста. Как создать таблицу в С++ с помощью функций?

Структуры: отобразить на экран анкетные данные студентов-отличников в виде таблицы - C++
Помогите разобраться как написать программу,вообще не понимаю алгоритм действий и как составить программу( Дан список учебной группы, ...

Должны ли быть тесты элементом класса? - C++
Здравствуйте. Я написал класс, написал тесты к нему. Нужно ли их поместить внутрь класса? Или куда их поместить? Пока тесты написаны в виде...

Какие требование должны быть к inline-функции, кроме её размера? - C++
Какие требование должны быть к inline-функции, кроме её размера? Я слышал что inline - это всего лишь "подсказка" компилятору... Является...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
__General__
24 / 24 / 3
Регистрация: 04.01.2014
Сообщений: 91
Завершенные тесты: 2
10.01.2014, 22:27     Данные о читателях должны быть организованны в виде хеш-таблицы #2
dopasdk, Судя по всему, вы не совсем правильно поняли задачу.
Цитата Сообщение от dopasdk Посмотреть сообщение
я представляю эти данные с помощью двумерного массива,где первый столбец это номер читательского билета
Нет, вы представляете данные с помощью массива описанных вами структур, в котором, если ключ - NNNN - 4х-значное число - то не меньше 10000 элементов.

Добавлено через 12 минут
С хеш таблицей, как со структурой данных, вы можете ознакомиться хотя бы на википедии:
http://ru.wikipedia.org/wiki/%D5%E5%...E1%EB%E8%F6%E0

Прелесть этой структуры данных состоит именно в том, что в среднем операции вставки, удаления и поиска элемента по ключу занимают константное время. В вашем же примере:
Цитата Сообщение от dopasdk Посмотреть сообщение
Я ввожу к примеру 0003 и мой цикл пробегает по первому столбцу и останавливается на той строчке у которой NNNN = 0003
Добавлено через 10 минут
операции - линейные (O(n)).

Из условия задачи мне не ясно одно, а именно, могут ли встречаться одинаковые регистрационные номера у различных клиентов, то есть, уникальны ли первичные ключи.
Если ключи уникальны, то проблем нет.
А если не уникальны, то могут возникнуть коллизии: ячейка (элемент массива), в которую вы пытаетесь добавить новый экземпляр, уже занята.

В этом случае существует несколько способов разрешения коллизий.
Например, можно в этом случае идти подряд по массиву до первой свободной ячейки таблицы.

Также бывает удобно использовать не открытое хеширование, а внешние цепи: в каждом элементе таблицы(массива) хранить не один экземпляр - а список экземпляров с одинаковыми ключами.

Добавлено через 27 секунд
операции - линейные (O(n)).

Из условия задачи мне не ясно одно, а именно, могут ли встречаться одинаковые регистрационные номера у различных клиентов, то есть, уникальны ли первичные ключи.
Если ключи уникальны, то проблем нет.
А если не уникальны, то могут возникнуть коллизии: ячейка (элемент массива), в которую вы пытаетесь добавить новый экземпляр, уже занята.

В этом случае существует несколько способов разрешения коллизий.
Например, можно в этом случае идти подряд по массиву до первой свободной ячейки таблицы.

Также бывает удобно использовать не открытое хеширование, а внешние цепи: в каждом элементе таблицы(массива) хранить не один экземпляр - а список экземпляров с одинаковыми ключами.
Ответ Создать тему
Опции темы

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