Advertisement
Guest User

Untitled

a guest
Oct 16th, 2019
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.33 KB | None | 0 0
  1. #include <iostream>
  2. #include <tuple>
  3. #include <string>
  4. #include <vector>
  5. #include <thread>
  6. using namespace std;
  7. int maxEl[4];
  8. void max(vector<int>tab, int start, int end, int index)
  9. {
  10. maxEl[index] = tab[start];
  11. for (int i = start + 1; i < end; i++)
  12. {
  13. if (maxEl[index] < tab[i])
  14. {
  15. maxEl[index] = tab[i];
  16. }
  17. }
  18. }
  19. int main()
  20. {
  21. vector<int> tab;
  22. for (int i = 0; i < 55; i++) {
  23. tab.push_back(rand() % 12344); //jakies randomowe wartosci
  24. }
  25. int rest = tab.size() % 4; //resztka jak dzielenie nierowne
  26. int part = (tab.size() - rest) / 4;//ile przypada na jeden watek
  27. vector<thread> threads;
  28. //maxEl trzyma aktualnie najwiekszy element dla danego watku (trzymam sobie od niechcenia globanie ale niewazne xd)
  29. maxEl[0] = 0;
  30. maxEl[1] = 0;
  31. maxEl[2] = 0;
  32. maxEl[3] = 0;
  33. threads.push_back(thread(max, tab, 0, part, 0));
  34. threads.push_back(thread(max, tab, part, part * 2, 1));
  35. threads.push_back(thread(max, tab, 2 * part, part * 3, 2));
  36. threads.push_back(thread(max, tab, 3 * part, part * 4 + rest, 3));
  37. for (int i = 0; i < 4; i++)
  38. {
  39. threads[i].join();
  40. }
  41. int tabMaxValue = maxEl[0];
  42. for (int i = 1; i < 4; i++)
  43. {
  44. if (tabMaxValue < maxEl[i])
  45. tabMaxValue = maxEl[i];
  46. }
  47. cout << tabMaxValue;
  48. cout << endl;
  49. for (int i = 0; i < tab.size(); i++) {
  50. cout << tab.at(i)<<endl;
  51. }
  52. return 0;
  53. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement