Advertisement
Jopa322

rand name+numbers sorting

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