AlexandrTalchuk

Untitled

May 23rd, 2020
48
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <iostream>
  2. using namespace std;
  3. // Объявить и ввести массив структур из n элементов. Создать хештаблицу из М элементов. Осуществить поиск элемента по ключу в хеш-таблице.
  4. //Вывести на экран исходный массив, хеш-таблицу и все поля найденной структуры. Задание выбрать в соответствии с номером варианта в табл. V.
  5. // key time
  6. //на основе связных списков
  7. //М=10
  8.  
  9. struct train
  10. {
  11. char area[30];
  12. int number;
  13. double time;
  14. };
  15.  
  16. struct Task
  17. {
  18. int inf;
  19. Task* p;
  20. };
  21.  
  22. //Task** Create(int M)
  23. //{
  24. // Task** H = new Task * [M];
  25. // for (int i = 0; i < M; i++)
  26. // {
  27. // H[i] = NULL;
  28. // }
  29. //}
  30.  
  31. //void Add( train t[],int inf, int m, Task** H)
  32. //{
  33. // int i = t[inf].time % m;
  34. //
  35. // Task* spt = new Task;
  36. // spt->inf = inf;
  37. // int i = inf % m;
  38. // if (H[i] == NULL)
  39. // {
  40. // H[i] = spt;
  41. // spt->p = NULL;
  42. // }
  43. // else
  44. // {
  45. // spt->p = H[i];
  46. // H[i] = spt;
  47. // }
  48. //}
  49.  
  50. Task* Search(int inf, int m, Task** H)
  51. {
  52. int i = abs(inf % m);
  53. Task* spt = H[i];
  54. while (spt != NULL)
  55. {
  56. if (spt->inf == inf) return spt;
  57. spt = spt->p;
  58. }
  59. return NULL;
  60. }
  61.  
  62. void Delete(int m, Task** H)
  63. {
  64. Task* spt, * sp;
  65. for (int i = 0; i < m; i++)
  66. {
  67. cout << "H[" << i << "]= ";
  68. sp = H[i];
  69. while (sp != NULL)
  70. {
  71. cout << sp->inf << " ";
  72. spt = sp;
  73. sp = sp->p;
  74. delete spt;
  75. }
  76. cout << endl;
  77. }
  78. delete[]H;
  79. }
  80.  
  81.  
  82. void View(train*t, int M)
  83. {
  84. for (int i = 0; i < M; i++)
  85. {
  86. cout << "Место прибывания:" << t[i].area << "\nНомер рейса" << t[i].number << "\nВремя отправления" << t[i].time << endl;
  87. }
  88. }
  89.  
  90. int main()
  91. {
  92. setlocale(LC_ALL, "rus");
  93.  
  94. /*H = Create(M);
  95. for (int i = 0; i <M; i++)
  96. {
  97. Add(mas[i], M, H);
  98. }
  99. int ss;
  100. Task* p;
  101. cin >> ss;
  102. while (ss != -1)
  103. {
  104. p = Search(ss, M, H);
  105. if (p == NULL)
  106. {
  107. cout << "Net elementa" << endl;
  108. }
  109. else cout << p->inf << endl;
  110. cin >> ss;
  111. }
  112. Delete(M, H);*/
  113. train* t = nullptr;
  114. train** hashTable = nullptr;
  115. int choice;
  116. int M, size;
  117. double time1;
  118. while (true)
  119. {
  120. cout << "1.Добавить элементы\n2.Найти элемент\n3.Просмотреть введеннные данные\n4. Просмотреть хэш таблицу\n5.Очистить\n6.Выйти";
  121. cin >> choice;
  122. switch (choice)
  123. {
  124. case 1:
  125. cout << "Введите размер хэш таблицы (стандарт 10)" << endl;
  126. cin >> M;
  127. hashTable = new train * [M];
  128. cout << "Введите количество элементов для ввода" << endl;
  129. cin >> size;
  130. while (size > M)
  131. {
  132. cout << "Количество элементов больше размера хэш таблицы" << endl;
  133. cin >> size;
  134. }
  135. for (int i = 0; i < size; i++)
  136. {
  137. cout << "Введите место прибывания: ";
  138. cin.ignore();
  139. cin.getline(t[i].area, 30);
  140. cout << "Введите номер рейса: ";
  141. cin >> t[i].number;
  142. cout << "Введите время отправления: ";
  143. cin >> t[i].time;
  144. }
  145. break;
  146. case 2:
  147. cout << "Введите время отправления" << endl;
  148. cin >> time1;
  149. break;
  150. case 3:
  151. break;
  152. case 4:
  153. if (hashTable = NULL)
  154. {
  155. cout << "Создайте хэш таблицу" << endl;
  156. return 0;
  157. }
  158. View(t, M);
  159. break;
  160. case 5:
  161. break;
  162. case 6:
  163. exit(0);
  164. break;
  165. default:
  166. cout << "Повторите еще раз" << endl;
  167. break;
  168.  
  169. }
  170. }
  171. }
RAW Paste Data