Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.10.2017, 23:50   #1
Кристина1998
Форумчанин
 
Регистрация: 01.11.2016
Сообщений: 110
По умолчанию Хеширование

Объясните, void HashFunctionSt(Keys *&GeneratedKeys, Keys *MassiveOfSegments,Keys *&BadKeys) , что может быть прописано в эти функциях :Keys *&GeneratedKeys, Keys *MassiveOfSegments,Keys *&BadKeys
Вот сам пример кода(из методички):
Код:
void HashFunctionSt(Keys *&GeneratedKeys, Keys *MassiveOfSegments,Keys *&BadKeys)
{
int hashNum=0;
Keys *Tmp = GeneratedKeys;
Keys *TmpBadKeys = BadKeys;
uint16_t minKeysCode = 0;
bool flag = false;
for (int i = 0; i < 6; i++)
{
if (TypeOfKey[i] == 'ц')
minKeysCode = minKeysCode + 48;
else minKeysCode = minKeysCode + 65;
}
uint16_t maxKeysCode = 0;
for (int i = 0; i < 6; i++)
{
if (TypeOfKey[i] == 'ц')
maxKeysCode = maxKeysCode + 57;
else maxKeysCode = maxKeysCode + 90;
}
uint16_t coeffOfExpansion = NumOfSegments / (maxKeysCode-minKeysCode);
for (int i = 0; i < NumOfKeys; i++)
{
for (int j = 0; j < 6; j++)
hashNum = hashNum+Tmp->keys[j];
hashNum = (hashNum - minKeysCode) * coeffOfExpansion;
MassiveOfSegments[hashNum].numOfH++;
for (int j = 0; j <= MaxNumOfCollisions; j++)
{
if (MassiveOfSegments[hashNum].keys[0] == NULL)
{
for (int y = 0; y < 6; y++)
6
MassiveOfSegments[hashNum].keys[y] = Tmp->keys[y];
break;
}
else if (j == MaxNumOfCollisions - 1)
{
if (BadKeys == NULL)
{
TmpBadKeys = new Keys;
for (int y = 0; y < 6; y++)
TmpBadKeys->keys[y] = Tmp->keys[y];
TmpBadKeys->next = NULL;
BadKeys = TmpBadKeys;
break;
}
else
{
TmpBadKeys->next = new Keys;
TmpBadKeys = TmpBadKeys -> next;
TmpBadKeys->next = NULL;
for (int y = 0; y < 6; y++)
TmpBadKeys->keys[y] = Tmp->keys[y];
break;
}
}
else
{
hashNum += StepOfLinearSampling;
if (hashNum > NumOfSegments)
hashNum -= NumOfSegments;
}
}
Tmp = Tmp->next;
hashNum = 0;
}
}
Кристина1998 вне форума Ответить с цитированием
Старый 16.10.2017, 00:18   #2
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,656
По умолчанию

https://codebeautify.org/cpp-formatter-beautifier
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 16.10.2017, 10:10   #3
Кристина1998
Форумчанин
 
Регистрация: 01.11.2016
Сообщений: 110
По умолчанию

Цитата:
Сообщение от min@y™ Посмотреть сообщение
эта ссылка мне ничем не помогла...
Кристина1998 вне форума Ответить с цитированием
Старый 16.10.2017, 10:16   #4
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

А эта?
http://www.programmersforum.ru/showt...36#post1597104
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 16.10.2017, 12:24   #5
Croessmah
Вредный кошак
Участник клуба
 
Аватар для Croessmah
 
Регистрация: 14.10.2012
Сообщений: 1,159
По умолчанию

Цитата:
Сообщение от Кристина1998 Посмотреть сообщение
эта ссылка мне ничем не помогла...
Это очень плохой знак.
Croessmah вне форума Ответить с цитированием
Старый 17.10.2017, 20:50   #6
Кристина1998
Форумчанин
 
Регистрация: 01.11.2016
Сообщений: 110
По умолчанию

Цитата:
Сообщение от Croessmah Посмотреть сообщение
Это очень плохой знак.
в каком смысле?
Кристина1998 вне форума Ответить с цитированием
Старый 17.10.2017, 21:34   #7
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Ну обычно программисты форматирует код, придерживаясь какого-то общепринятого (в языке или компании/команде) стиля.

Или если уж откуда-то взялся кусок неотформатированного кода, то для начала хотя бы отформатируют его средствами IDE или сервиса как по ссылке выше.

Ну и используют нормальные имена переменных/функций, глаголы для функций и т.п.

https://ru.hexlet.io/blog/posts/naming-in-programming
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 19.10.2017, 00:03   #8
Кристина1998
Форумчанин
 
Регистрация: 01.11.2016
Сообщений: 110
По умолчанию

[QUOTE=Alex11223;1703351]
Код:
void HashFunctionSt(Keys * & GeneratedKeys, Keys * MassiveOfSegments, Keys * & BadKeys) {
  int hashNum = 0;
  Keys * Tmp = GeneratedKeys;
  Keys * TmpBadKeys = BadKeys;
  uint16_t minKeysCode = 0;
  bool flag = false;
  for (int i = 0; i < 6; i++) {
    if (TypeOfKey[i] == 'ц')
      minKeysCode = minKeysCode + 48;
    else minKeysCode = minKeysCode + 65;
  }
  uint16_t maxKeysCode = 0;
  for (int i = 0; i < 6; i++) {
    if (TypeOfKey[i] == 'ц')
      maxKeysCode = maxKeysCode + 57;
    else maxKeysCode = maxKeysCode + 90;
  }
  uint16_t coeffOfExpansion = NumOfSegments / (maxKeysCode - minKeysCode);
  for (int i = 0; i < NumOfKeys; i++) {
    for (int j = 0; j < 6; j++)
      hashNum = hashNum + Tmp - > keys[j];
    hashNum = (hashNum - minKeysCode) * coeffOfExpansion;
    MassiveOfSegments[hashNum].numOfH++;
    for (int j = 0; j <= MaxNumOfCollisions; j++) {
      if (MassiveOfSegments[hashNum].keys[0] == NULL) {
        for (int y = 0; y < 6; y++)
          6
        MassiveOfSegments[hashNum].keys[y] = Tmp - > keys[y];
        break;
      } else if (j == MaxNumOfCollisions - 1) {
        if (BadKeys == NULL) {
          TmpBadKeys = new Keys;
          for (int y = 0; y < 6; y++)
            TmpBadKeys - > keys[y] = Tmp - > keys[y];
          TmpBadKeys - > next = NULL;
          BadKeys = TmpBadKeys;
          break;
        } else {
          TmpBadKeys - > next = new Keys;
          TmpBadKeys = TmpBadKeys - > next;
          TmpBadKeys - > next = NULL;
          for (int y = 0; y < 6; y++)
            TmpBadKeys - > keys[y] = Tmp - > keys[y];
          break;
        }
      } else {
        hashNum += StepOfLinearSampling;
        if (hashNum > NumOfSegments)
          hashNum -= NumOfSegments;
      }
    }
    Tmp = Tmp - > next;
    hashNum = 0;
  }
}
Кристина1998 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Хеширование Vladislaw.onisckif Общие вопросы C/C++ 0 25.11.2013 22:12
C# хеширование Rakuz Помощь студентам 0 30.05.2012 01:10
хеширование rowlin Общие вопросы C/C++ 1 07.05.2011 07:20
Хеширование: Necare Помощь студентам 5 21.03.2011 19:46
Хеширование RunForest Общие вопросы .NET 4 10.08.2009 15:21