Advertisement
Guest User

Untitled

a guest
Apr 24th, 2019
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.95 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <string>
  4.  
  5. class Populated_locality {
  6. private:
  7. std::string name;
  8. int population;
  9. public:
  10. Populated_locality(){}
  11.  
  12. Populated_locality(std::string name, int population) {
  13. this->name = name;
  14. this->population = population;
  15. }
  16.  
  17. std::string get_name() {
  18. return name;
  19. }
  20.  
  21. int get_population() {
  22. return population;
  23. }
  24. };
  25.  
  26. class Locality_array {
  27. private:
  28. std::vector<Populated_locality> p_l_array;
  29. int length;
  30. public:
  31. Locality_array() {
  32. p_l_array = {};
  33. length = 0;
  34. }
  35.  
  36. void add(Populated_locality obj) {
  37. p_l_array.push_back(obj);
  38. length++;
  39. }
  40.  
  41. void print() {
  42. int i = 1;
  43. for (Populated_locality n : p_l_array) {
  44. std::cout << i << ' ';
  45. std::cout << n.get_name() << '\n';
  46. std::cout << n.get_population() << '\n';
  47. i++;
  48. }
  49. }
  50. void easy_selection_sort() {
  51.  
  52. int min;
  53. Populated_locality tmp;
  54.  
  55. for (int i = 0; i < length - 1; i++) {
  56. min = i;
  57. for (int j = i + 1; j < length; j++) {
  58. if (p_l_array[j].get_name() < p_l_array[i].get_name())
  59. min = j;
  60. }
  61. tmp = p_l_array[i];
  62. p_l_array[i] = p_l_array[min];
  63. p_l_array[min] = tmp;
  64. }
  65. }
  66. void quick_sort(int begin, int end) {
  67.  
  68. int l = begin, r = end;
  69. std::string piv = p_l_array[(l + r) / 2].get_name();
  70.  
  71. do {
  72.  
  73. while (p_l_array[l].get_name() < piv)
  74. l++;
  75. while (p_l_array[r].get_name() > piv)
  76. r--;
  77. if (l <= r)
  78. std::swap(p_l_array[l++], p_l_array[r--]);
  79.  
  80.  
  81.  
  82. } while (l <= r);
  83. if (begin < r) quick_sort(begin, r);
  84. if (end > l) quick_sort(l, end);
  85.  
  86. }
  87.  
  88. std::vector<Populated_locality> get_p_l_array() {
  89. return p_l_array;
  90. }
  91. int get_length() {
  92. return length;
  93. }
  94. };
  95.  
  96. void main_menu(char *ch) {
  97. setlocale(LC_ALL, "Russian");
  98. std::cout << "1 (P)rint - Вывод коллекциина экран." << '\n';
  99. std::cout << "2 (A)dd - Вставка нового объекта." << '\n';
  100. std::cout << "3 (I)nsert - Вставка нового объекта по указанному индексу." << '\n';
  101. std::cout << "4 (D)elete - Удаление объекта по указанному индексу." << '\n';
  102. std::cout << "5 (G)et - Получение объекта поуказанному индексу." << '\n';
  103. std::cout << "6 (S)ize - Получение количества объектов в коллекции." << '\n';
  104. std::cout << "7 (F)ind - Простой поиск объекта по полю «Название населенного пункта»." << '\n';
  105. std::cout << "8 (B)inary find - Бинарный поиск объекта по полю «Название населенного пункта»." << '\n';
  106.  
  107. std::cout << "9 (Q)uick Sort - Сортировка коллекции \"Быстрой сортировкой\"." << '\n';
  108. std::cout << "10 Simpl(e) Sort - Сортировка коллекции \"Сортировка простым выбором\"." << '\n';
  109. std::cin >> *ch;
  110.  
  111. }
  112. void add_in_collection(Locality_array *data_base) {
  113. std::string name;
  114. int population;
  115. std::cout << "Введите название населенного пункта." << '\n';
  116. std::cin >> name;
  117. std::cout << "Введите количество жителей населенного пункта." << '\n';
  118. std::cin >> population;
  119. Populated_locality obj(name, population);
  120. data_base->add(obj);
  121.  
  122. }
  123.  
  124.  
  125. int main() {
  126. Locality_array data_base;
  127. char ch = 0;
  128. while (ch != 'x') {
  129. main_menu(&ch);
  130. switch (ch) {
  131. case 'p':
  132. data_base.print();
  133. break;
  134. case 'a':
  135. add_in_collection(&data_base);
  136. break;
  137. case 's':
  138. std::cout << data_base.get_length() << '\n';
  139. break;
  140. case 'q':
  141. data_base.quick_sort(0, data_base.get_length() - 1);
  142. break;
  143. case 'e':
  144. data_base.easy_selection_sort();
  145. break;
  146. }
  147.  
  148. }
  149.  
  150. data_base.print();
  151.  
  152. std::cout << '\n';
  153.  
  154. data_base.print();
  155. int pause;
  156. std::cin >> pause;
  157. getchar();
  158. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement