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

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

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

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

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

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

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

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

C++ я учусь на высшке на программиста.. какие могут быть задачи на экзамене 1й курс .2й семестр!!.. должны быть классы!!
Надо передать данные в виде таблицы C++
C++ Вывести данные в виде таблицы
C++ Как через if объявить, что некоторые значения не должны быть равны 0
C++ Задача со строками (ввод списка фамилий через запятую в виде строки. Фамилии должны быть отсортированы по-алфавиту)
Должны ли быть тесты элементом класса? C++
Вывести данные из файла в виде таблицы C++
C++ Какие требование должны быть к inline-функции, кроме её размера?
Считать данные из текстового файла, переписать в бинарный, и вывести в виде выровненной таблицы C++
Найти объём пирамиды, и вывести данные в виде таблицы C++
Структуры: отобразить на экран анкетные данные студентов-отличников в виде таблицы C++
Конвертировать данные под разрядность хотя бы в 16 бит (переменные должны быть знаковыми и вещественными) C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
__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)).

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

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

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

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