tablica haszująca

0

Mam nastepujący problem. Zadanie polega na implementacji tablicy haszującej podanej niżej oraz 2 zaproponowanych funkcji mieszających

Jako dane tekstowe nalezy użyć słownik zawierający słowa w języku angielskim.

Funkcja haszująca do wykorzystania:

int hash(const std::string &s)
{
int result = 0;
for (int i = 0; i < s.length(); ++i)
{
result ^= s[i];
}
return result;
}

Uwaga: powyższa funkcja generuje wartości z przedziału [0, 255] - na potrzeby zadania
należy zmodyfkować ją tak, aby generowała wartości z szerszego zakresu.

Ktoś wie jak to ugryźć?

1

tak

1

Ta funkcja daje wyniki tylko 0-255 bo xorujesz zmienne char które są 1bajtowe (czyli przyjmują właśnie 256 wartości).
Chcesz więcej wyników? Xoruj inne kawałki tekstu niż 1 bajtowe. Jak? Rzutuj na przykład kawałki po 4 bajty na int i xoruj ;)

int hash(const char* slowo)
{
  int modulo = 1000; //maksymalna liczba jaką chcesz uzyskać
  int ret=0;
  int n=strlen(slowo); //dlugosć słowa

  while(n>=sizeof(int)) //dopóki są kawałki po 4 bajty
  {
   ret^=*(int*)slowo; //xor na 4 bajtach
   n-=sizeof(int); //"skracamy słowo"
   slowo+=sizeof(int); //przesuwamy sie dalej
  }

  int rem=0; //to co nam zostało, tzn 1,2 lub 3 bajty
  while(n--)
  {
    rem<<=8; //przesuwamy się o 1 bajt
    rem^=*slowo++; //xor
  }
  ret^=rem;
  return ret%modulo;
}
0

Najpierw trzeba się dowiedzieć, jak działa tablica hashująca -> Google.

0

Chłopaki/dziewczyny podpinam sie do posta, gdyż mam do rozwiązania identyczny problem.

Wspomógłby ktoś gotowym rozwiazaniem??

Był bym wdzięczny

0

Pomroczność? Przecież tu już jest gotowiec ode mnie...

0

Przepraszam kolego.
Nie doczytałem całego polecenia.

Moje zadanie to:

<image>18464a0831.png</image>

54cd50ef57.png

Prosze o pomoc

0

I co? Liczysz że ktoś ci da gotowca? o_O Chyba będę musiał wysłać maila do odpowiedniej osoby na politechnice łódzkiej...

0

Czerwiec to ciężki okres dla studenta.....

Każda pomoc w cenie

1

Cena... otóż to ;-)

0

Za 50 zł będziesz miał rozwiązanie za 10 minut.

1 użytkowników online, w tym zalogowanych: 0, gości: 1