Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- const int N = 10;
- string H[N];
- //FUUNKCJA HASZUJACA I ZAPISUJACA DO TABLICY
- int fH(string s)
- {
- int sumaModulo = 0;
- for(int i = 0; i < s.length(); i++)
- sumaModulo += s[i];
- return sumaModulo % N;
- }
- void wstawianie(string s)
- {
- int index = fH(s);
- if(H[index] == "") //jak pusto to dodajemy
- H[index] = s;
- else
- for(int i = 1; i < N; i++)
- {
- if(index + i < N) //sprawdzam nastepne elementy az do konca tablicy
- {
- if(H[index + i] == "") //jesli jakis nastepny przed koncem jest
- { //pusty to dodaje i przerywam funkcje bo koniec
- H[index + i] = s;
- break;
- }
- }
- else //jesli doszlismy do konca tablicy
- {
- for(int j = 0; j < index; j++) //sprawdzam od poczatku i wstawiam
- if(H[j] == "") //do pierwszego wolnego, potem przerywam
- {
- H[j] = s;
- break;
- }
- break;
- }
- }
- }
- int wyszukiwanie(string s)
- {
- int index = fH(s);
- if(H[index] == "") //jak pusto to nie ma
- return 0;
- else //jesli nie jest pusto
- if(H[index] == s) //jak to samo to zwracamy
- return index;
- else //jak jest cos innego od szukanego
- for(int i = 1; i < N; i++)
- {
- if(index + i < N) //sprawdzamy nastepne elementy az do konca tablicy
- {
- if(H[index + i] == "") //jesli w nastepnym nie ma, to dalej
- return 0; //tez nie bedzie
- if(H[index + i] == s) //jesli jest to zwracamy
- return index + i;
- }
- else //jesli nastepny element wychodzi poza tablice to
- for(int i = 0; i < index; i++) //sprawdzaamy tablice od poczatku
- {
- if(H[i] == "") //jesli pierwszy pusty to znaczy ze nie ma
- return 0;
- if(H[i] == s) //jak jest to go zwracamy
- return i;
- }
- }
- }
- void usuwanie(string s)
- {
- int index = fH(s);
- if(H[index] == s) //jak jest pod szukanym indexem to zerujemy
- H[index] = "";
- else //jak nie ma
- for(int i = 1; i < N; i++)
- {
- if(index + i < N) //przechodzimy tablice do konca
- {
- if(H[index + i] == s) //zerujemy kazdy taki sam
- H[index + i] = "";
- }
- else //przechodzimy tablice od poczatku
- {
- for(int i = 0; i < index; i++)
- {
- if(H[i] == s) //kazdy taki sam zerujemy
- H[i] = "";
- }
- }
- }
- }
- void drukuj()
- {
- for(int i = 0; i < N; i++)
- {
- cout<<"H["<<i<<"] = "<<H[i]<<endl;
- }
- cout<<endl;
- }
- int main(){
- for(int i = 0; i < N; i++)
- H[i] = "";
- wstawianie("KOTA");
- wstawianie("BAR");
- wstawianie("ATOK");
- wstawianie("TOKA");
- wstawianie("TO");
- wstawianie("AKOT");
- wstawianie("RAB");
- wstawianie("ARB");
- wstawianie("KO");
- wstawianie("RBA");
- drukuj();
- cout << wyszukiwanie("KOTA") << endl;
- cout << wyszukiwanie("BAR") << endl;
- cout << wyszukiwanie("ATOK") << endl;
- cout << wyszukiwanie("TOKA") << endl;
- cout << wyszukiwanie("TO") << endl;
- cout << wyszukiwanie("AKOT") << endl;
- cout << wyszukiwanie("RAB") << endl;
- cout << wyszukiwanie("ARB") << endl;
- cout << wyszukiwanie("KO") << endl;
- cout << wyszukiwanie("RBA") << endl;
- usuwanie("KOTA");
- usuwanie("BAR");
- usuwanie("ATOK");
- usuwanie("TOKA");
- usuwanie("TO");
- usuwanie("AKOT");
- usuwanie("RAB");
- usuwanie("ARB");
- usuwanie("KO");
- usuwanie("RBA");
- wstawianie("OJOJ");
- for(int i = 0; i < N; i++)
- cout << H[i] << endl;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement