emelrad12

c++ wtf

Dec 27th, 2018
131
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.67 KB | None | 0 0
  1. #include "pch.h"
  2. #include <iostream>
  3. #include <math.h>
  4. #include <Windows.h>
  5. #include <chrono>
  6. #include <stdio.h>
  7. #include <thread>
  8. #include <iostream>
  9. #include <vector>
  10. #include <string>
  11. using namespace std;
  12. const int Companies = 100;
  13. const int Factories = 2500;
  14. const int Departments = 25;
  15. const int NumofResources = 200;//0-99 import 100-199 export
  16. int delay = 0;
  17. class Department {
  18. public:
  19.     char name;
  20.     int inputtype;
  21.     int outputtype;
  22.     float typeprodfactor;
  23.     float typeconsfactor;
  24.     int numberofworkers;
  25.     float toexport;
  26.     float imported;
  27.     int size;
  28. private:
  29.     int maxworkers;
  30. };
  31. class Factory {
  32. public:
  33.     float money;
  34.     float OwnedResources[NumofResources];
  35.     vector<Department> OwnedDepartment;
  36.  
  37. };
  38. class Company {
  39. public:
  40.     char name;
  41.     vector<Factory> OwnedFactories;
  42.  
  43. };
  44. vector<Company> Database;
  45.  
  46. //Fills database with random values, DB is expandable
  47. void InitializeDB() {
  48.     Database.reserve(Companies);
  49.     for (int i = 0; i < Companies; ++i) {
  50.         Database.push_back(Company());
  51.         Database[i].OwnedFactories.reserve(Factories);
  52.         for (int k = 0; k < Factories; ++k) {
  53.             Database[i].OwnedFactories.push_back(Factory());
  54.             Database[i].OwnedFactories[k].OwnedDepartment.reserve(Departments);
  55.             for (int l = 0; l < Departments; ++l) {
  56.                 Database[i].OwnedFactories[k].OwnedDepartment.push_back(Department());
  57.                 Database[i].OwnedFactories[k].OwnedDepartment[l].inputtype = rand() % 100;
  58.                 Database[i].OwnedFactories[k].OwnedDepartment[l].outputtype = rand() % 100;
  59.                 Database[i].OwnedFactories[k].OwnedDepartment[l].typeprodfactor = (rand() % 10) + 1;
  60.                 Database[i].OwnedFactories[k].OwnedDepartment[l].typeconsfactor = (rand() % 10) + 1;
  61.                 Database[i].OwnedFactories[k].OwnedDepartment[l].numberofworkers = rand() % 5 + 1;
  62.                 Database[i].OwnedFactories[k].OwnedDepartment[l].toexport = rand() % 100;
  63.                 Database[i].OwnedFactories[k].OwnedDepartment[l].imported = 0;
  64.                 Database[i].OwnedFactories[k].OwnedDepartment[l].size = rand() % 100;
  65.             }
  66.         }
  67.     }
  68. }
  69. void produce(int Com, int Fac, int Dep) {
  70.     float conspertick = Database[Com].OwnedFactories[Fac].OwnedDepartment[Dep].numberofworkers*Database[Com].OwnedFactories[Fac].OwnedDepartment[Dep].typeconsfactor;
  71.     if (Database[Com].OwnedFactories[Fac].OwnedDepartment[Dep].imported > conspertick) {
  72.         float prodpertick = Database[Com].OwnedFactories[Fac].OwnedDepartment[Dep].numberofworkers*Database[Com].OwnedFactories[Fac].OwnedDepartment[Dep].typeprodfactor;
  73.         Database[Com].OwnedFactories[Fac].OwnedDepartment[Dep].toexport = Database[Com].OwnedFactories[Fac].OwnedDepartment[Dep].toexport + prodpertick;
  74.         Database[Com].OwnedFactories[Fac].OwnedDepartment[Dep].imported = Database[Com].OwnedFactories[Fac].OwnedDepartment[Dep].imported - conspertick;
  75.     }
  76. }
  77. //feed it Deparment and it does one tick of production
  78. void ProduceAll() {
  79.     for (int i = 0; i < Companies; ++i) {
  80.         for (int k = 0; k < Factories; ++k) {
  81.             for (int l = 0; l < Departments; ++l) {
  82.                 produce(i, k, l);
  83.             }
  84.         }
  85.     }
  86. }
  87. void transport(int Com, int Fac, int Dep) {
  88.     //out
  89.     if (Database[Com].OwnedFactories[Fac].OwnedDepartment[Dep].toexport > 0) {
  90.         Database[Com].OwnedFactories[Fac].OwnedResources[Database[Com].OwnedFactories[Fac].OwnedDepartment[Dep].outputtype] = Database[Com].OwnedFactories[Fac].OwnedResources[Database[Com].OwnedFactories[Fac].OwnedDepartment[Dep].outputtype]+ Database[Com].OwnedFactories[Fac].OwnedDepartment[Dep].toexport;
  91.         Database[Com].OwnedFactories[Fac].OwnedDepartment[Dep].toexport = 0;
  92.     }
  93.     //in
  94.     float conspertick = Database[Com].OwnedFactories[Fac].OwnedDepartment[Dep].numberofworkers*Database[Com].OwnedFactories[Fac].OwnedDepartment[Dep].typeconsfactor;
  95.     if (Database[Com].OwnedFactories[Fac].OwnedResources[Database[Com].OwnedFactories[Fac].OwnedDepartment[Dep].inputtype] > conspertick*delay) {
  96.         Database[Com].OwnedFactories[Fac].OwnedDepartment[Dep].imported = conspertick * 7;
  97.         Database[Com].OwnedFactories[Fac].OwnedResources[Database[Com].OwnedFactories[Fac].OwnedDepartment[Dep].inputtype] = Database[Com].OwnedFactories[Fac].OwnedResources[Database[Com].OwnedFactories[Fac].OwnedDepartment[Dep].inputtype] - conspertick * 7;
  98.    
  99.     }
  100.  
  101. }
  102. void TransportAll() {
  103.     for (int i = 0; i < Companies; ++i) {
  104.         for (int k = 0; k < Factories; ++k) {
  105.             for (int l = 0; l < Departments; ++l) {
  106.                 transport(i, k, l);
  107.             }
  108.         }
  109.     }
  110. }
  111. int a;
  112. int main()
  113. {
  114.     InitializeDB();
  115.     auto start = std::chrono::system_clock::now();
  116.     for (int i = 0;i<365;++i)
  117.     {
  118.  
  119.         ProduceAll();
  120.         //transport resources every #delay days
  121.         if (delay==0){     
  122.             TransportAll();
  123.             delay = 7;
  124.         }
  125.         delay = delay - 1;
  126.  
  127.  
  128.         //int c = 0;
  129.         //int v = 5;
  130.         //int b = 3;
  131.         //system("cls");
  132.         //cout <<"toexport= "<< Database[c].OwnedFactories[v].OwnedDepartment[b].toexport<<endl;
  133.         //cout <<"import= "<< Database[c].OwnedFactories[v].OwnedDepartment[b].imported << endl;
  134.         //cout << "numberofworkers= " << Database[c].OwnedFactories[v].OwnedDepartment[b].numberofworkers << endl;
  135.         //cout << "typeprodfactor= " << Database[c].OwnedFactories[v].OwnedDepartment[b].typeprodfactor << endl;
  136.         //cout << "typeconsfactor= " << Database[c].OwnedFactories[v].OwnedDepartment[b].typeconsfactor <<endl ;
  137.         //cout << "conspertick= " << Database[c].OwnedFactories[v].OwnedDepartment[b].typeconsfactor*Database[c].OwnedFactories[v].OwnedDepartment[b].numberofworkers << endl;
  138.         //cout << "prodpertick= " << Database[c].OwnedFactories[v].OwnedDepartment[b].typeprodfactor*Database[c].OwnedFactories[v].OwnedDepartment[b].numberofworkers << endl;
  139.         //Sleep(500);
  140.  
  141.        
  142.        
  143.     }
  144.     auto end = std::chrono::system_clock::now();
  145.     auto elapsed = std::chrono::duration_cast<std::chrono::milliseconds>(end - start);
  146.     cout << elapsed.count() << '\n';
  147.     cin >> a;
  148. }
Advertisement
Add Comment
Please, Sign In to add comment