Advertisement
majczel23000

Haszowanie Liniowe

Jan 11th, 2018
201
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.28 KB | None | 0 0
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. const int N = 10;
  5. string H[N];
  6.  
  7. //FUUNKCJA HASZUJACA I ZAPISUJACA DO TABLICY
  8. int fH(string s)
  9. {
  10.     int sumaModulo = 0;
  11.     for(int i = 0; i < s.length(); i++)
  12.         sumaModulo += s[i];
  13.     return sumaModulo % N;
  14. }
  15.  
  16. void wstawianie(string s)
  17. {
  18.     int index = fH(s);
  19.     if(H[index] == "")  //jak pusto to dodajemy
  20.         H[index] = s;
  21.     else
  22.         for(int i = 1; i < N; i++)
  23.         {
  24.             if(index + i < N)   //sprawdzam nastepne elementy az do konca tablicy
  25.             {
  26.                 if(H[index + i] == "")  //jesli jakis nastepny przed koncem jest
  27.                 {                       //pusty to dodaje i przerywam funkcje bo koniec
  28.                     H[index + i] = s;
  29.                     break;
  30.                 }
  31.             }
  32.             else                //jesli doszlismy do konca tablicy
  33.             {
  34.                 for(int j = 0; j < index; j++)  //sprawdzam od poczatku i wstawiam
  35.                     if(H[j] == "")              //do pierwszego wolnego, potem przerywam
  36.                     {
  37.                         H[j] = s;
  38.                         break;
  39.                     }
  40.                 break;
  41.             }
  42.         }
  43. }
  44.  
  45.  
  46. int wyszukiwanie(string s)
  47. {
  48.     int index = fH(s);
  49.     if(H[index] == "")  //jak pusto to nie ma
  50.         return 0;
  51.     else                //jesli nie jest pusto
  52.         if(H[index] == s)   //jak to samo to zwracamy
  53.             return index;
  54.         else            //jak jest cos innego od szukanego
  55.             for(int i = 1; i < N; i++)
  56.             {
  57.                 if(index + i < N)   //sprawdzamy nastepne elementy az do konca tablicy
  58.                 {
  59.                     if(H[index + i] == "")  //jesli w nastepnym nie ma, to dalej
  60.                         return 0;           //tez nie bedzie
  61.                     if(H[index + i] == s)   //jesli jest to zwracamy
  62.                         return index + i;
  63.                 }
  64.                 else                //jesli nastepny element wychodzi poza tablice to
  65.                     for(int i = 0; i < index; i++) //sprawdzaamy tablice od poczatku
  66.                     {
  67.                         if(H[i] == "")  //jesli pierwszy pusty to znaczy ze nie ma
  68.                             return 0;
  69.                         if(H[i] == s)   //jak jest to go zwracamy
  70.                             return i;
  71.                     }
  72.             }
  73. }
  74.  
  75. void usuwanie(string s)
  76. {
  77.     int index = fH(s);
  78.     if(H[index] == s)   //jak jest pod szukanym indexem to zerujemy
  79.         H[index] = "";
  80.     else                //jak nie ma
  81.         for(int i = 1; i < N; i++)
  82.         {
  83.             if(index + i < N)       //przechodzimy tablice do konca
  84.             {
  85.                 if(H[index + i] == s)   //zerujemy kazdy taki sam
  86.                     H[index + i] = "";
  87.             }
  88.             else    //przechodzimy tablice od poczatku
  89.             {
  90.                 for(int i = 0; i < index; i++)
  91.                 {
  92.                     if(H[i] == s)   //kazdy taki sam zerujemy
  93.                         H[i] = "";
  94.                 }
  95.             }
  96.         }
  97. }
  98.  
  99. void drukuj()
  100. {
  101.     for(int i = 0; i < N; i++)
  102.     {
  103.         cout<<"H["<<i<<"] = "<<H[i]<<endl;
  104.     }
  105.     cout<<endl;
  106. }
  107. int main(){
  108.  
  109.     for(int i = 0; i < N; i++)
  110.         H[i] = "";
  111.  
  112.     wstawianie("KOTA");
  113.     wstawianie("BAR");
  114.     wstawianie("ATOK");
  115.     wstawianie("TOKA");
  116.     wstawianie("TO");
  117.     wstawianie("AKOT");
  118.     wstawianie("RAB");
  119.     wstawianie("ARB");
  120.     wstawianie("KO");
  121.     wstawianie("RBA");
  122.  
  123.     drukuj();
  124.  
  125.     cout << wyszukiwanie("KOTA") << endl;
  126.     cout << wyszukiwanie("BAR") << endl;
  127.     cout << wyszukiwanie("ATOK") << endl;
  128.     cout << wyszukiwanie("TOKA") << endl;
  129.     cout << wyszukiwanie("TO") << endl;
  130.     cout << wyszukiwanie("AKOT") << endl;
  131.     cout << wyszukiwanie("RAB") << endl;
  132.     cout << wyszukiwanie("ARB") << endl;
  133.     cout << wyszukiwanie("KO") << endl;
  134.     cout << wyszukiwanie("RBA") << endl;
  135.  
  136.     usuwanie("KOTA");
  137.     usuwanie("BAR");
  138.     usuwanie("ATOK");
  139.     usuwanie("TOKA");
  140.     usuwanie("TO");
  141.     usuwanie("AKOT");
  142.     usuwanie("RAB");
  143.     usuwanie("ARB");
  144.     usuwanie("KO");
  145.     usuwanie("RBA");
  146.     wstawianie("OJOJ");
  147.     for(int i = 0; i < N; i++)
  148.         cout << H[i] << endl;
  149.  
  150. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement