Guest User

Untitled

a guest
Jul 17th, 2018
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.15 KB | None | 0 0
  1. /*Napraviti konkurentni program koji pronalazi element najbliži 0 iz
  2. zadatog niza brojeva. Posao podeliti u 3 toka izvršavanja.
  3. a) Za stvaranje niti koristiti klasu thread.
  4.  
  5. */
  6.  
  7. #include <iostream>
  8. #include <thread>
  9. #include <vector>
  10. #include <cmath>
  11. #include <algorithm>
  12.  
  13. using namespace std;
  14.  
  15. typedef vector<double> :: const_iterator it;
  16.  
  17. void f(it begin, it end, double* min){
  18.     *min = *begin;
  19.     for(; begin!=end; begin++){
  20.         if(abs(*begin)<abs(*min))
  21.             *min = *begin;
  22.     }
  23. }
  24.  
  25. int main(){
  26.     vector <double> a={1, 4, 5, 6, -0.05, 2, 3, 0.1, 7};
  27.     size_t n=3;
  28.     double rez;
  29.  
  30.     thread niti[n];
  31.  
  32.     it begin_a = a.begin();
  33.  
  34.     size_t length = a.size();
  35.  
  36.     vector<double> minimumi(n);
  37.  
  38.     for(size_t i=0; i<a.size(); i++){
  39.         niti[i] = thread(f, begin_a + i*length/n ,begin_a + n + n*i, &minimumi[i]);
  40.     }
  41.  
  42.     for( size_t i=0; i<n;i++){
  43.         niti[i].join();
  44.     }
  45.  
  46.  
  47.     for(size_t i=0; i<n;i++){
  48.         cout<<minimumi[i]<<endl;
  49.     }
  50.  
  51.  
  52.    //cout << "Element najblizi nuli je" <<abs(*min_element(minimumi.begin(), minimumi.end()))<<endl; --STL  #include <algorithm>
  53.  
  54. return 0;
  55. }
Add Comment
Please, Sign In to add comment