Advertisement
Jopa322

sort rand

Nov 29th, 2018
128
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.85 KB | None | 0 0
  1. #include "pch.h"
  2. #include "iostream"
  3. #include "time.h"
  4. #include <string>
  5. using namespace std;
  6.  
  7.  
  8.  
  9. struct Bank
  10. {
  11. string name;
  12. int inc[4];
  13. };
  14. class TBank
  15. {
  16. private:
  17. Bank * mass;
  18. int n;
  19.  
  20. public:
  21. TBank(int nn = 5);
  22. ~TBank();
  23. void vvod();
  24. void vivod();
  25. int Max(int Bank);
  26. int Sum(int Bank);
  27. void rnd();
  28. void sort(int POLE, int pr);
  29. void filevivod(string path, string pathbin);
  30. };
  31.  
  32. TBank::TBank(int nn)
  33. {
  34. n = nn;
  35. mass = new Bank[n];
  36. }
  37.  
  38. TBank::~TBank()
  39. {
  40. delete[]mass;
  41. }
  42.  
  43.  
  44. void TBank::sort(int POLE, int pr)
  45. {
  46. Bank x;
  47. int i, j, b;
  48. for (i = 0; i < n - 1; i++)
  49. {
  50. for (j = i + 1; j < n; j++)
  51. {
  52. switch (POLE)
  53. {
  54. case 1:
  55. b = strcmp(mass[i].name.c_str(), mass[j].name.c_str()) > 0;
  56. break;
  57. case 2: case 3: case 4: case 5:
  58. b = mass[i].inc[POLE - 2] > mass[j].inc[POLE - 2];
  59. break;
  60. case 6:
  61. b = Max(i) > Max(j);
  62. break;
  63. case 7:
  64. b = Sum(i) > Sum(j);
  65. break;
  66. }
  67. if (pr) b = !b;
  68. if (b)
  69. {
  70. x = mass[i];
  71. mass[i] = mass[j];
  72. mass[j] = x;
  73. }
  74. }
  75. }
  76. }
  77. void TBank::vvod()
  78. {
  79. for (int i = 0; i < n; i++)
  80. {
  81. cout << "Введите название банка:" << endl;
  82. cin >> mass[i].name;
  83. for (int j = 0; j < 4; j++)
  84. {
  85. cout << "Введите денежные поступления за квартал " << j + 1 << endl;
  86. cin >> mass[i].inc[j];
  87. }
  88. }
  89. }
  90.  
  91. void TBank::rnd()
  92. {
  93. int t,z;
  94.  
  95. for (int i = 0; i < n; i++)
  96. {
  97. char *grsh = new char;
  98. t = 3 + rand() % 10;
  99. for (z = 0; z < t; z++)
  100. {
  101. grsh[z] = char(65 + rand() % 26);
  102.  
  103. }
  104. grsh[z] = '\0';
  105. mass[i].name = grsh;
  106. for (int j = 0; j < 4; j++)
  107. {
  108. mass[i].inc[j] = rand() % 999 + 1;
  109. }
  110. }
  111. }
  112.  
  113. int TBank::Max(int Bank)
  114. {
  115. int max = 0;
  116. for (int j = 0; j < 4; j++)
  117. {
  118. if (mass[Bank].inc[j] > max)
  119. {
  120. max = mass[Bank].inc[j];
  121. }
  122. }
  123. return max;
  124. }
  125.  
  126. int TBank::Sum(int Bank)
  127. {
  128. int sum = 0;
  129. for (int j = 0; j < 4; j++)
  130. {
  131. sum += mass[Bank].inc[j];
  132. }
  133. return sum;
  134. }
  135.  
  136. void TBank::vivod()
  137. {
  138. printf("%-20s", "(1) Банк");
  139. printf("%-16s", "(2) 1й квартал");
  140. printf("%-16s", "(3) 2й квартал");
  141. printf("%-16s", "(4) 3й квартал");
  142. printf("%-16s", "(5) 4й квартал");
  143. printf("%-16s", "(6) Максимум");
  144. printf("%-16s", "(7) Сумма");
  145. printf("\n");
  146.  
  147. for (int i = 0; i < n; i++)
  148. {
  149. printf("%-20s", mass[i].name.c_str());
  150. printf("%-16d", mass[i].inc[0]);
  151. printf("%-16d", mass[i].inc[1]);
  152. printf("%-16d", mass[i].inc[2]);
  153. printf("%-16d", mass[i].inc[3]);
  154. printf("%-16d", Max(i));
  155. printf("%-16d", Sum(i));
  156. cout << endl;
  157. }
  158. }
  159. void TBank::filevivod(string path, string pathbin) {
  160. FILE *f, *b;
  161. fopen_s(&f, path.c_str(), "wt");
  162. fprintf(f, "%-20s", "Банк");
  163. fprintf(f, "%-16s", "1й квартал");
  164. fprintf(f, "%-16s", "2й квартал");
  165. fprintf(f, "%-16s", "3й квартал");
  166. fprintf(f, "%-16s", "4й квартал");
  167. fprintf(f, "%-16s", "Максимум");
  168. fprintf(f, "%-16s", "Сумма");
  169. fprintf(f, "\n");
  170.  
  171. for (int i = 0; i < n; i++)
  172. {
  173. fprintf(f, "%-20s", mass[i].name.c_str());
  174. fprintf(f, "%-16d", mass[i].inc[0]);
  175. fprintf(f, "%-16d", mass[i].inc[1]);
  176. fprintf(f, "%-16d", mass[i].inc[2]);
  177. fprintf(f, "%-16d", mass[i].inc[3]);
  178. fprintf(f, "%-16d", Max(i));
  179. fprintf(f, "%-16d", Sum(i));
  180. fprintf(f, "\n");
  181. }
  182. fclose(f);
  183. cout << "Произведена запись таблицы в файл C:\\Users\\STUD\\Desktop\\files\\text.txt " << endl;
  184.  
  185.  
  186. fopen_s(&b, pathbin.c_str(), "wb");
  187. for (int i = 0; i < n; i++)
  188. {
  189. fwrite(mass + i, sizeof(Bank), 1, b);
  190. }
  191. fclose(b);
  192. cout << "Произведена запись таблицы в файл C:\\Users\\STUD\\Desktop\\files\\test.bin " << endl;
  193. }
  194.  
  195.  
  196. int main()
  197. {
  198. srand(time(0));
  199. setlocale(LC_ALL, "RUS");
  200. int x;
  201. int k;
  202. int qq, wqwqw;
  203. cout << "Введите количество банков в городе:" << endl;
  204. cin >> k;
  205.  
  206. TBank a(k);
  207. cout << "1-random , 0 нет" << endl;
  208. cin >> x;
  209. if (x == 1)a.rnd();
  210. else a.vvod();
  211. a.vivod();
  212.  
  213. char option = 1;
  214. do {
  215. system("cls");
  216. a.vivod();
  217. cout << "Введите номер столбца (1-7) для сортировки или 0 что бы пропустить сортировку" << endl;
  218. cin >> qq;
  219. if (qq != 0)
  220. {
  221. cout << "1 - по убыванию, 0 - по возрастанию" << endl;
  222. cin >> wqwqw;
  223. a.sort(qq, wqwqw);
  224. }
  225. system("cls");
  226. cout << "Отсортированная таблица: " << endl;
  227. a.vivod();
  228. cout << "Нажмите 0 для выхода, любую другую клавишу для продолжения" << endl;
  229. cin >> option;
  230. } while (option != '0');
  231. a.filevivod("C:\\Users\\STUD\\Desktop\\files\\text.txt", "C:\\Users\\STUD\\Desktop\\files\\test.bin");
  232. system("pause");
  233. return 0;
  234. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement