Advertisement
Shin0

9lab

Mar 18th, 2018
263
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.30 KB | None | 0 0
  1. #include "stdafx.h"
  2. #include <iostream>
  3. #include <Windows.h>
  4. #include <cstdlib>
  5.  
  6. using namespace std;
  7. struct storage {
  8.  
  9. char name[20];
  10. unsigned int number : 14;
  11. double cost;
  12. float percent;
  13.  
  14. };
  15. union
  16. {
  17. int in;
  18. double dou;
  19. float fl;
  20. }t;
  21. enum choice { input = 1, output, sorting, search, change, deleting, exits };
  22. enum inside_choice { name = 1, cost, number, persent };
  23. int main()
  24. {
  25. SetConsoleCP(1251);
  26. SetConsoleOutputCP(1251);
  27. int n, i;
  28. cout << "Введите количество товаров ";
  29. n = 1;
  30. storage *a = new storage[n];
  31. while (n != 0) {
  32. system("cls");
  33. cout << "+---------------------------------------------------+" << "\n";
  34. cout << "|1) Ввод массива структур; |" << "\n";
  35. cout << "|2) Вывод массива структур; |" << "\n";
  36. cout << "|3) Сортировка массива структур; |" << "\n";
  37. cout << "|4) Поиск в массиве структур по заданному параметру;|" << "\n";
  38. cout << "|5) Изменение заданной структуры; |" << "\n";
  39. cout << "|6) Удаление структуры из массива; |" << "\n";
  40. cout << "|7) Выход. |" << "\n";
  41. cout << "+---------------------------------------------------+" << "\n";
  42. cout << "Введите выбранный пункт ";
  43. cin >> t.in;
  44. switch (t.in)
  45. {
  46. case input: {
  47. cout << "Введите количество товаров ";
  48. cin >> n;
  49. a = new storage[n];
  50. for (i = 0; i < n; i++) {
  51. cout << "Введите название товара ";
  52. cin >> (a + i)->name;
  53. cout << "Введите цену ";
  54. cin >> t.dou;
  55. a[i].cost = t.dou;;
  56. cout << "Введите количество товаров ";
  57. cin >> t.in;
  58. a[i].number = t.in;
  59. cout << "Введите процент торговой надбавки ";
  60. cin >> t.fl;
  61. a[i].percent = t.fl;
  62. }
  63. for (i = 0; i < n; i++)
  64. for (int z = i + 1; z < n; z++)
  65. if (strcmp(a[i].name, a[z].name)>0) {
  66. swap(a[z], a[i]);
  67. }
  68. break;
  69. }
  70. case output:
  71. {
  72. for (i = 0; i < n; i++)
  73. cout << i + 1 << " " << (a + i)->name << "\t" << (a + i)->cost << "\t" << a[i].number << "\t" << a[i].percent << "\n";
  74. system("pause");
  75. break;
  76. }
  77. case sorting:
  78. {
  79. cout << "1)Название товара " << "\n" << "2)Цена" << "\n" << "3)Количество товаров" << "\n" << "4)Процент торговой надбавки" << "\n" << "Введите параметр для сортировки ";
  80. cin >> t.in;
  81. switch (t.in)
  82. {
  83. case name: {
  84. for (i = 0; i < n; i++)
  85. for (int z = i + 1; z < n; z++)
  86. if (strcmp(a[i].name, a[z].name) > 0) {
  87. swap(a[z], a[i]);
  88. }
  89. break;
  90. }
  91. case cost: {
  92. for (i = 0; i < n; i++)
  93. for (int z = i + 1; z < n; z++)
  94. if (a[i].cost > a[z].cost) {
  95. swap(a[z], a[i]);
  96. }
  97. break;
  98. }
  99. case number: {
  100. for (i = 0; i < n; i++)
  101. for (int z = i + 1; z < n; z++)
  102. if (a[i].number > a[z].number) {
  103. swap(a[z], a[i]);
  104. }
  105. break;
  106. }
  107. case persent: {
  108. for (i = 0; i < n; i++)
  109. for (int z = i + 1; z < n; z++)
  110. if (a[i].percent > a[z].percent) {
  111. swap(a[z], a[i]);
  112. }
  113. break;
  114. }
  115. }
  116. break;
  117. }
  118. case search: {
  119. cout << "1)Название товара " << "\n" << "2)Цена" << "\n" << "3)Количество товаров" << "\n" << "4)Процент торговой надбавки" << "\n" << "Введите параметр для поиска ";
  120. cin >> t.in;
  121.  
  122. switch (t.in)
  123. {
  124. case name: {
  125. char w[20];
  126. cout << "Введите название ";
  127. cin >> w;
  128. for (i = 0; i < n; i++)
  129. if (strcmp(a[i].name, w) == 0) {
  130. cout << i + 1 << " " << a[i].name << "\t" << a[i].cost << "\t" << a[i].number << "\t" << a[i].percent << "\n";
  131. system("pause");
  132. }
  133. break;
  134. }
  135. case cost: {
  136. cout << "Введите значение ";
  137. cin >> t.dou;
  138. for (i = 0; i < n; i++)
  139. if (a[i].cost == t.dou) {
  140. cout << i + 1 << " " << a[i].name << "\t" << a[i].cost << "\t" << a[i].number << "\t" << a[i].percent << "\n";
  141. system("pause");
  142. }
  143. break;
  144. }
  145. case number: {
  146. cout << "Введите значение ";
  147. cin >> t.in;
  148. for (i = 0; i < n; i++)
  149. if (a[i].number == t.in) {
  150. cout << i + 1 << " " << a[i].name << "\t" << a[i].cost << "\t" << a[i].number << "\t" << a[i].percent << "\n";
  151. system("pause");
  152. }
  153. break;
  154. }
  155. case persent: {
  156. cout << "Введите значение ";
  157. cin >> t.fl;
  158. for (i = 0; i < n; i++)
  159. if (a[i].percent == t.fl) {
  160. cout << i + 1 << " " << a[i].name << "\t" << a[i].cost << "\t" << a[i].number << "\t" << a[i].percent << "\n";
  161. system("pause");
  162. }
  163. break;
  164. }
  165. }
  166. break;
  167. }
  168. case change: {
  169. for (i = 0; i < n; i++)
  170. cout << i + 1 << " " << a[i].name << "\t" << a[i].cost << "\t" << a[i].number << "\t" << a[i].percent << "\n";
  171. cout << "Введите номер строки для изменения";
  172. int q;
  173. cin >> q;
  174. cout << "Введите название нового товара ";
  175. cin >> a[q - 1].name;
  176. cout << "Введите новую цену ";
  177. cin >> t.dou;
  178. a[q - 1].cost = t.dou;
  179. cout << "Введите новое количество товаров ";
  180. cin >> t.in;
  181. a[q - 1].number = t.in;
  182. cout << "Введите новый процент торговой надбавки ";
  183. cin >> t.fl;
  184. a[q - 1].percent = t.fl;
  185. break;
  186. }
  187. case deleting: {
  188. for (i = 0; i < n; i++)
  189. cout << i + 1 << " " << a[i].name << "\t" << a[i].cost << "\t" << a[i].number << "\t" << a[i].percent << "\n";
  190. cout << "Введите номер структуры для удаления ";
  191. cin >> t.in;
  192. storage *b=new storage[n-1];
  193. for (int j = 0, m = 0; j < n; j++, m++)
  194. if (j != t.in-1)
  195. b[m] = a[j];
  196. else m--;
  197. delete[] a;
  198. n--;
  199. a = b;
  200. break;
  201. }
  202. case exits:
  203. {
  204. delete[] a;
  205. exit(0);
  206. break;
  207. }
  208. }
  209. }
  210. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement