haszowanie

Programowanie w języku C i językach pochodnych, jak C++, C#
agusiaczarna22
Posty: 2
Rejestracja: 14 sty 2014, 17:56

haszowanie

Post autor: agusiaczarna22 » 14 sty 2014, 18:03

Mam napisane w programie C++ metode haszowania tak:


using namespace std;

void haszowanie(int tab[], int klucz);

int main()
{
int tab[100]={0},n,klucz;
cout << "Podaj ilosc elemetow n: ";
cin >> n; //wprowadzenie liczby n z klawiatury
for(int i=0; i<n; i++)
{
cout << "Podaj element nr: " << i+1 << ": ";
cin >> klucz;
haszowanie(tab, klucz);
}
for(int j=0; j<100; j++)
{
cout << tab[j] << ", ";
}
cout << endl;
return 0;
}

void haszowanie(int tab[], int klucz)
{
int indeks,sukces=0,licznik_kolizji=0,indeks_bez_kolizji;
indeks=klucz%100;
indeks_bez_kolizji=indeks;
while(!sukces)
{
if(!tab[indeks])
{
tab[indeks]=klucz;
sukces=1;
}
else // kolizja! jezeli arg. pierwszy nie jest spelniony
{
licznik_kolizji++;
indeks=(indeks_bez_kolizji+licznik_kolizji*(klucz%101+1))%103;
if(indeks>=100) indeks=0;
}
}
}

Wszystko działa.Problem w tym, że nie wiem na czym ona polega i co tutaj się dzieje w tym??Musze też wskazać jaki tu jest przepis na to haszowanie w jaki sposób ono tutaj polega a także te funkcje lokaluzująca muszą być sprzężone. Jestem w tym zieona:( Błagam o pomoc.