emelrad12

c++ not so wtf

Dec 27th, 2018
145
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.19 KB | None | 0 0
  1. #include "stdafx.h"
  2. #include <iostream>
  3. #include <math.h>
  4. #include <Windows.h>
  5. #include <chrono>
  6. #include <stdio.h>
  7. #include <thread>
  8.  
  9. using namespace std;
  10. //refers to departments
  11. //Company/*/Region/*/Factory/*/Department/*/0input type/1output type/2typeprodfactor/3typeconsfactor/4Number of workers/5Price of bought resources/6Stockpiled EResources/7Avaivable Resources/8active?/9size in 1000ppl
  12. //refers to factories
  13. //Company/*/Region/*/Factory/*/0Money/1-100Input avaivable type/101-200Output availvable type
  14. //refers to pricing
  15. //type/price
  16. const int Companies = 2;
  17. const int Regions = 250;
  18. const int Factories = 5;
  19. const int Departments = 10000;
  20. const int Additional = 10;
  21. const int Additional2 = 5;
  22. int b = 0;
  23. float FactoryDB[Companies][Regions][Factories][Additional2];
  24. float DepartmentDB[Companies][Regions][Factories][Departments][Additional];
  25. int Initialize_DB() {
  26. for (int i = 0; i < Companies; ++i) {
  27. for (int j = 0; j < Regions; ++j) {
  28. for (int k = 0; k < Factories; ++k) {
  29. for (int l = 0; l < Departments; ++l) {
  30. for (int m = 0; m < Additional - 1; ++m) {
  31. DepartmentDB[i][j][k][l][m] = rand() % 100;
  32. if (DepartmentDB[i][j][k][l][1] == 0) {
  33. DepartmentDB[i][j][k][l][1] = 1;
  34. }
  35. if (DepartmentDB[i][j][k][l][4] > 5) {
  36. DepartmentDB[i][j][k][l][4] = 5;
  37. }
  38. if (DepartmentDB[i][j][k][l][3] < .1) {
  39. DepartmentDB[i][j][k][l][3] = .1;
  40. }
  41. DepartmentDB[i][j][k][l][8] = rand() % 1;
  42.  
  43. }
  44. }
  45. }
  46. }
  47. }
  48. return 0;
  49. }
  50. long int counted = 0;
  51. //int typeprodfactor, int typeconsfactor//Modifies the production and consumption of resources
  52. int Produce(int compf, int regf, int factoryf, int departmentf, float typeprodfactor, float typeconsfactor) {
  53. DepartmentDB[compf][regf][factoryf][departmentf][6] = DepartmentDB[compf][regf][factoryf][departmentf][6] + DepartmentDB[compf][regf][factoryf][departmentf][4] * typeprodfactor;
  54. DepartmentDB[compf][regf][factoryf][departmentf][7] = DepartmentDB[compf][regf][factoryf][departmentf][7] - DepartmentDB[compf][regf][factoryf][departmentf][4] * typeconsfactor;
  55. return 0;
  56. }
  57. int mainProducer() {
  58.  
  59. for (int i = 0; i < Companies; ++i) {
  60.  
  61. for (int j = 0; j < Regions; ++j) {
  62. for (int k = 0; k < Factories; ++k) {
  63.  
  64. for (int l = 0; l < Departments; ++l) {
  65. if (DepartmentDB[i][j][k][l][8] == 1) {
  66. if (DepartmentDB[i][j][k][l][7] >= DepartmentDB[i][j][k][l][4] * DepartmentDB[i][j][k][l][3]) {
  67. Produce(i, j, k, l, DepartmentDB[i][j][k][l][2], DepartmentDB[i][j][k][l][3]);
  68. }
  69. }
  70. }
  71.  
  72. }
  73.  
  74. }
  75.  
  76. }
  77.  
  78. ++counted;
  79. return 0;
  80. }
  81. float interfactorytransport(int compf, int regf, int factoryf, int departmentf) {
  82. if (DepartmentDB[compf][regf][factoryf][departmentf][6] > 0) {
  83. int outputtype = DepartmentDB[compf][regf][factoryf][departmentf][1];
  84. FactoryDB[compf][regf][factoryf][outputtype + 100] = FactoryDB[compf][regf][factoryf][outputtype + 100] + DepartmentDB[compf][regf][factoryf][departmentf][6];
  85. DepartmentDB[compf][regf][factoryf][departmentf][6] = 0;
  86. }
  87. float DB[2];
  88. int inputtype = DepartmentDB[compf][regf][factoryf][departmentf][0];
  89. if (FactoryDB[compf][regf][factoryf][inputtype] > 0) {
  90. DepartmentDB[compf][regf][factoryf][departmentf][7] = DepartmentDB[compf][regf][factoryf][departmentf][7] + FactoryDB[compf][regf][factoryf][inputtype];
  91. FactoryDB[compf][regf][factoryf][inputtype] = 0;
  92. }
  93. return 0;
  94. }
  95.  
  96. int mainTransporter() {
  97. for (int i = 0; i < Companies; ++i) {
  98. for (int j = 0; j < Regions; ++j) {
  99. for (int k = 0; k < Factories; ++k) {
  100. for (int l = 0; l < Departments; ++l) {
  101. interfactorytransport(i, j, k, l);
  102. }
  103. }
  104. }
  105. }
  106. return 0;
  107. }
  108. int wait = 5;
  109. int main(void)
  110. {
  111.  
  112. int AvailvableResources = 1;
  113. Initialize_DB();
  114. while (true) {
  115. auto start = std::chrono::system_clock::now();
  116. thread first(mainProducer);
  117. if (wait > 50000) {
  118. thread second(mainTransporter);
  119. second.join();
  120. wait = 0;
  121. }
  122. first.join();
  123. //++wait;
  124. auto end = std::chrono::system_clock::now();
  125. auto elapsed = std::chrono::duration_cast<std::chrono::milliseconds>(end - start);
  126. cout << elapsed.count() << '\n';
  127.  
  128. }
  129.  
  130. cin >> AvailvableResources;
  131. return 0;
  132. }
Advertisement
Add Comment
Please, Sign In to add comment