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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 17, средняя оценка - 4.82
Apelsin199
11 / 11 / 1
Регистрация: 04.11.2012
Сообщений: 127
29.01.2013, 12:53     Хеширование-метод середины квадрата #1
Вот такая ситуация...
Тип данных строки, метод разрешения колизии "открытая адресация". Проблема в самой хеш-функции, прочитал много теории, но никак не выходит теорию в жизнь воплатить =)
Вот что есть:

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++ Сравнить площадь круга и площадь квадрата , которые заданы сответствено радиусом r и стороной квадрата a
Хеширование C++
C++ Шифровать методом Магического квадрата (размер квадрата 9х9) С++
Массивы. Заполнить, разбить на квадраты размером 3х3. В центре каждого квадрата поместить сумму остальных элементов квадрата C++
Найти двузначные числа, у которых сумма удвоенного квадрата первой цифры и квадрата второй цифры равен самому числу C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
m1Rr0r
 Аватар для m1Rr0r
247 / 230 / 15
Регистрация: 05.02.2010
Сообщений: 3,213
Завершенные тесты: 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     Хеширование-метод середины квадрата
Еще ссылки по теме:

Площадь квадрата равна S. Вычислить сторону квадрата а, диагональ d и площадь S1 описанного около этого квадрата круга C++
C++ СЛАУ. Метод обратной матрицы, метод Гаусса, метод Крамера, метод Зейделя

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

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

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