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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 17, средняя оценка - 4.82
Apelsin199
11 / 11 / 1
Регистрация: 04.11.2012
Сообщений: 127
#1

Хеширование-метод середины квадрата - C++

29.01.2013, 12:53. Просмотров 2428. Ответов 6
Метки нет (Все метки)

Вот такая ситуация...
Тип данных строки, метод разрешения колизии "открытая адресация". Проблема в самой хеш-функции, прочитал много теории, но никак не выходит теорию в жизнь воплатить =)
Вот что есть:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
int _key(char* ch0)
{
    int key;
    key=strlen(ch0);
    return key;
}
 
int main()
{
    setlocale(LC_ALL,"rus");
    char ch1[10]="ZERO";
    _key(ch1);
    char ch2[10]="One";
    _key(ch2);
    char ch3[10]="Two";
    _key(ch3);
    char ch4[10]="Free";
    _key(ch4);
    getch();
    return 0;
}
Я получаю ключ строки (правильно ли я это делаю?...) затем я должен этот ключ умножить сам на себя и в качестве индекса взять пару чисел из чсередины квадрата, да?
Это у меня не получается, вот что есть:

C++
1
2
3
4
5
6
int seredina_cvadrata(int key)
{
    key = key*key;
    int index=0;
    index =   // 0_o
}
Как индекс взять, и что делать дальше?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.01.2013, 12:53     Хеширование-метод середины квадрата
Посмотрите здесь:

Метод середины квадрата - C++
Здравствуйте. Нужно заставить работать алгоритм фон Неймана (ГПСЧ) - метод середины квадрата. Заставить потому что последовательность...

Шифровать методом Магического квадрата (размер квадрата 9х9) С++ - C++
Шифровать методом Магического квадрата (размер квадрата 9х9) С++ Дана таблица 9х9. Надо реализовать программу на С++...

Разбить матрицу на квадраты размером 3х3; в центре каждого квадрата поместить сумму прочих элементов квадрата - C++
Есть задача: Заполнить матрицу случайными числами. Разбить матрицу на квадраты размером 3х3. В центре каждого квадрата поместить сумму...

Массивы. Заполнить, разбить на квадраты размером 3х3. В центре каждого квадрата поместить сумму остальных элементов квадрата - C++
Помогите уважаемые программисты написать "Заполнить матрицу случайными числами. Розбить матрицу на квадраты размером 3х3. В центре каждого...

Найти двузначные числа, у которых сумма удвоенного квадрата первой цифры и квадрата второй цифры равен самому числу - C++
Найти двузначные числа, у которых сумма удвоенного квадрата первой цифры и квадрата второй цифры равен самому числу

Хеширование - C++
Помогите, пожалуйста.Поиск в хеш-таблицах. Написать класс Group. В группу должны входить студенты, содержащие следующие данные: -фамилия ...

Хеширование - C++
1. Реализовать интерактивное приложение со следующей функциональностью, использующее вышеописанный модуль. a. Создание хеш-таблицы...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
m1Rr0r
247 / 230 / 15
Регистрация: 05.02.2010
Сообщений: 3,256
Завершенные тесты: 2
29.01.2013, 16:05     Хеширование-метод середины квадрата #2
http://www.rsdn.ru/article/alg/bintree/hash.xml#ETF
Smetanka
56 / 17 / 1
Регистрация: 14.05.2012
Сообщений: 134
29.01.2013, 16:59     Хеширование-метод середины квадрата #3
Apelsin199, ключ неправильно вычисляешь
Apelsin199
11 / 11 / 1
Регистрация: 04.11.2012
Сообщений: 127
29.01.2013, 19:55  [ТС]     Хеширование-метод середины квадрата #4
Цитата Сообщение от Smetanka Посмотреть сообщение
Apelsin199, ключ неправильно вычисляешь
А как правильно? Да и как надо?....
Smetanka
56 / 17 / 1
Регистрация: 14.05.2012
Сообщений: 134
29.01.2013, 19:59     Хеширование-метод середины квадрата #5
Apelsin199, ну например
1) Ключ должен быть как можно индивидульнее. Т.е. каждому элементу свой ключ(тогда уже будет намного меньше коллизий). У тебя же слово "слон" и слово "муха" дадут одинаковое значение ключа, т.е. 4
2) С методом квадратов я не сталкивался, но почитал в двух словах - в принципе исходников много. Там надо применять побитовый сдвиг(если хочешь вытащить из числа серидину)

Не по теме:

за место

C++
1
2
3
4
5
6
int _key(char* ch0)
{
    int key;
    key=strlen(ch0);
    return key;
}
можно написать
C++
1
2
3
4
int _key(char* ch0)
{
    return strlen(ch0);
}
ну это так)))

Apelsin199
11 / 11 / 1
Регистрация: 04.11.2012
Сообщений: 127
29.01.2013, 20:04  [ТС]     Хеширование-метод середины квадрата #6
Серьезно все... Спасибо, буду капать =)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.01.2013, 20:07     Хеширование-метод середины квадрата
Еще ссылки по теме:

Хеширование - C++
1. Реализовать интерактивное приложение со следующей функциональностью, использующее вышеописанный модуль. a. Создание хеш-таблицы...

Хеширование - C++
Вот такая проблема... Точнее их много, но если по порядку, то сейчас только такая проблема: Хеширование, методом середины квадрата,...

Хеширование - C++
У меня есть вариант хешировани данных для ГОСТ 28147-89. Помогите ее переделать под ГОСТ Р 34.11-94. вот...

открытое хеширование - C++
помогите запустить программу ошибка в 13 строке. #include <stdio.h> #include <stdlib.h> #include <stdbool.h> typedef struct...

Хеширование пароля - C++
Проблема такая, нужно захешировать пароль пользователя, пробовал уже всё, что нашел в интернете, наверное я тугой В общем, не подскажете...


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

Или воспользуйтесь поиском по форуму:
Smetanka
56 / 17 / 1
Регистрация: 14.05.2012
Сообщений: 134
29.01.2013, 20:07     Хеширование-метод середины квадрата #7
Apelsin199, на хабре была статья по этому поводу. В свое время я отуда черпал информацию) Ну а функции вытаскивания СЕРЕДИНЫ из числа довольно часты в просторах интернета) Удачи в твоих начинаниях
Yandex
Объявления
29.01.2013, 20:07     Хеширование-метод середины квадрата
Ответ Создать тему
Опции темы

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