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

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

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

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

29.01.2013, 12:53. Просмотров 2460. Ответов 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
}
Как индекс взять, и что делать дальше?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.01.2013, 12:53
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Хеширование-метод середины квадрата (C++):

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

Площадь квадрата равна S. Вычислить сторону квадрата а, диагональ d и площадь S1 описанного около этого квадрата круга - C++
Напишите код в C++ Пожалуйста :confusion:

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

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

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

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
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
0
Smetanka
56 / 17 / 1
Регистрация: 14.05.2012
Сообщений: 134
29.01.2013, 16:59 #3
Apelsin199, ключ неправильно вычисляешь
0
Apelsin199
11 / 11 / 1
Регистрация: 04.11.2012
Сообщений: 127
29.01.2013, 19:55  [ТС] #4
Цитата Сообщение от Smetanka Посмотреть сообщение
Apelsin199, ключ неправильно вычисляешь
А как правильно? Да и как надо?....
0
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);
}
ну это так)))

1
Apelsin199
11 / 11 / 1
Регистрация: 04.11.2012
Сообщений: 127
29.01.2013, 20:04  [ТС] #6
Серьезно все... Спасибо, буду капать =)
0
Smetanka
56 / 17 / 1
Регистрация: 14.05.2012
Сообщений: 134
29.01.2013, 20:07 #7
Apelsin199, на хабре была статья по этому поводу. В свое время я отуда черпал информацию) Ну а функции вытаскивания СЕРЕДИНЫ из числа довольно часты в просторах интернета) Удачи в твоих начинаниях
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.01.2013, 20:07
Привет! Вот еще темы с ответами:

Сравнить площадь круга и площадь квадрата , которые заданы сответствено радиусом r и стороной квадрата a - C++
сравнить площадь круга и площадь квадрата , которые заданы сответствено радиусом r и стороной квадрата a

СЛАУ. Метод обратной матрицы, метод Гаусса, метод Крамера, метод Зейделя - C++
Помогите ребят. Не могу построить алгоритмы для этих методов Язык C++

Реализовать класс "Квадрат" с данными-членами "центр квадрата" и "сторона квадрата" - C++
Объявить класс по приведенному ниже заданию в соответствии с номером варианта и определить для него конструктор по умолчанию,...

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


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
29.01.2013, 20:07
Ответ Создать тему
Опции темы

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