Maxim_Leo

Untitled

May 6th, 2022
43
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.25 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3. #include <list>
  4. #include <vector>
  5. #include <iterator>
  6. #include <fstream>
  7. using namespace std;
  8.  
  9. vector< list<string>*> hash_table;
  10.  
  11. void hash_(string word) {
  12. int sum = 0;
  13. int num = 0;
  14. hash_table.resize(10);
  15. char numbers1[] = { '0','А', 'Б', 'В', 'Г', 'Д', 'Е', 'Ё', 'Ж', 'З', 'И', 'К', 'Л', 'М', 'Н', 'О', 'П', 'Р', 'С', 'Т', 'У', 'Ф', 'Х', 'Ц', 'Ч', 'Ш', 'Щ', 'Ъ', 'Ы', 'Ь', 'Э', 'Ю', 'Я' };
  16. char numbers2[] = { '0','а', 'б', 'в', 'г', 'д', 'е', 'ё', 'ж', 'з', 'и', 'к', 'л', 'м', 'н', 'о', 'п', 'р', 'с', 'т', 'у', 'ф', 'х', 'ц', 'ч', 'ш', 'щ', 'ъ', 'ы', 'ь', 'э', 'ю', 'я' };
  17.  
  18. for (int k = 0; k < word.size(); k++) {
  19. for (int m = 0; m < sizeof(numbers1); m++) {
  20. if (word[k] == numbers1[m]) {
  21. sum += m;
  22. num++;
  23. }
  24. }
  25. for (int t = 0; t < sizeof(numbers2); t++) {
  26. if (word[k] == numbers2[t]) {
  27. sum += t;
  28. num++;
  29. }
  30. }
  31.  
  32. }
  33. for (size_t i = 0; i < hash_table.size(); i++)
  34. hash_table[i] = new list< string >;
  35. sum = sum % 10;
  36. list< string > list1;
  37. if (hash_table[sum]) {
  38. hash_table[sum]->push_front(word);
  39. }
  40.  
  41. else {
  42. hash_table[sum]->push_back(word);
  43. ofstream fout("collisions.txt");
  44. fout << "Коллизии по хешу " << sum << " : " << endl<<word;
  45. }
  46. cout << "Слово " << num << " : " << sum << endl;
  47. sum = 0;
  48. }
  49. int getHash(string word) {
  50. int sum = 0;
  51. int num = 0;
  52. char numbers1[] = { '0','А', 'Б', 'В', 'Г', 'Д', 'Е', 'Ё', 'Ж', 'З', 'И', 'К', 'Л', 'М', 'Н', 'О', 'П', 'Р', 'С', 'Т', 'У', 'Ф', 'Х', 'Ц', 'Ч', 'Ш', 'Щ', 'Ъ', 'Ы', 'Ь', 'Э', 'Ю', 'Я' };
  53. char numbers2[] = { '0','а', 'б', 'в', 'г', 'д', 'е', 'ё', 'ж', 'з', 'и', 'к', 'л', 'м', 'н', 'о', 'п', 'р', 'с', 'т', 'у', 'ф', 'х', 'ц', 'ч', 'ш', 'щ', 'ъ', 'ы', 'ь', 'э', 'ю', 'я' };
  54.  
  55. for (int k = 0; k < word.size(); k++) {
  56. for (int m = 0; m < sizeof(numbers1); m++) {
  57. if (word[k] == numbers1[m]) {
  58. sum += m;
  59. num++;
  60. }
  61. }
  62. for (int t = 0; t < sizeof(numbers2); t++) {
  63. if (word[k] == numbers2[t]) {
  64. sum += t;
  65. num++;
  66. }
  67. }
  68.  
  69. }
  70. sum = sum % 10;
  71. return sum;
  72. }
  73.  
  74. auto string_find(string word) {
  75. int num = getHash(word);
  76. return *hash_table[num]->begin();
  77. }
  78. int main()
  79. {
  80. setlocale(LC_ALL, "Russian");
  81. cout << "Задание 1: " << endl;
  82. vector<string> words = { "Ноутбук","Компьютер","Телефон","Планшет","Приставка","Умные часы","Наушники" };
  83. //hash1(words, 7, listwords);
  84. for (int i = 0; i < 7; i++) {
  85. hash_(words[i]);
  86. }
  87.  
  88. cout<<string_find(words[3]);
  89. cout << endl << "Задание 2: " << endl;
  90.  
  91. return 0;
  92. }
  93.  
  94.  
Advertisement
Add Comment
Please, Sign In to add comment