Форум программистов, компьютерный форум CyberForum.ru

Многопоточность. Посчитать выражение - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Найти ошибки в задаче с перегрузками функций http://www.cyberforum.ru/cpp-beginners/thread1744711.html
Помогите, пожалуйста, определить, где здесь ошибка:cry: Никак не могу найти.. Буду очень благодарна! #include <iostream> #include <math.h> using namespace std; float ploshad(int a,int b,int c) { float p=(a+b+c)/2.0;
C++ Получить индексы всех нулевых элементов матрицы Дана целочисленная матрица. Получить индексы всех нулевых элементов. Называйте темы так, чтобы было понятно о чем в ней пойдет речь. http://www.cyberforum.ru/cpp-beginners/thread1744708.html
Найти сумму всех модулей разностей между ними C++
Даны n чисел. Найти сумму всех модулей разностей между ними.
C++ Выяснить является ли данная числовая последовательность упорядоченной по убыванию
Выяснить является ли данная числовая последовательность упорядоченной по убыванию?
C++ Ищу книгу с описанием растровой графики поочередно с использованием MFC и с использованием CLR. http://www.cyberforum.ru/cpp-beginners/thread1744701.html
Форумчане здравствуйте. Скачал как-то книгу и удалил, а сейчас понадобилась. Прошу Вас подсказать название, если знаете. Там описывалась растровая графика поочередно с использованием MFC и с использованием CLR. На протяжении всей книги показывалось как писать программу (вроде Skether называлась). Прога примерно такая же как и у Хортона "Visual C++ полный курс", но не та, не полностью((( :cry:...
C++ Ссылка на метод класса если кратко то задача такова надо передать адрес метода класа.как это можно сделать? подробнее

Показать сообщение отдельно
isachenko
8 / 0 / 0
Регистрация: 24.05.2015
Сообщений: 5
25.05.2016, 21:53  [ТС]     Многопоточность. Посчитать выражение
В общем сделал вот, работает и хорошо. Спасибо за подсказки
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
#include <thread> // потоки выполнения
#include <mutex>
#include <string>
#include <iostream>
 
using namespace std;
 
double resultf1;
double resultf2;
double resultf3;
double resultf4;
double resultf5;
mutex mtx;
void f1(const int&step, const int&x)
{
    std::this_thread::sleep_for(std::chrono::seconds(1));
    mtx.lock();
    double stepen;
    double fact;
    stepen = 1;
    fact = 1;
    for (int i=0; i<step ; i++)
    {
        stepen = stepen * x;
    }
    for (int j=1; j<=step; j++)
    {
        
        fact = fact*j; 
    }
    resultf1 = stepen/fact;
    mtx.unlock();
}
 
void f2(const int&step, const int&x)
{
    std::this_thread::sleep_for(std::chrono::seconds(1));
    mtx.lock();
    double stepen;
    double fact;
    stepen = 1;
    fact = 1;
    for (int i=0; i<step ; i++)
    {
        stepen = stepen * x;
    }
    for (int j=1; j<=step; j++)
    {
        fact = fact*j; 
    }
    resultf2 = stepen/fact;
    mtx.unlock();
}
void f3(const int&step, const int&x)
{
    std::this_thread::sleep_for(std::chrono::seconds(1));
    mtx.lock();
    double stepen;
    double fact;
    stepen = 1;
    fact = 1;
    for (int i=0; i<step ; i++)
    {
        stepen = stepen * x;
    }
    for (int j=1; j<=step; j++)
    {
        fact = fact*j;  
    
    }resultf3 = stepen/fact;
    mtx.unlock();
}
void f4(const int&step, const int&x)
{
    std::this_thread::sleep_for(std::chrono::seconds(1));
    mtx.lock();
    double stepen;
    double fact;
    stepen = 1;
    fact = 1;
    for (int i=0; i<step ; i++)
    {
        stepen = stepen * x;
    }
    for (int j=1; j<=step; j++)
    {
        fact = fact*j;  
    }
    resultf4 = stepen/fact;
    mtx.unlock();
}
void f5(const int&x)
{
    std::this_thread::sleep_for(std::chrono::seconds(1));
    mtx.lock();
    resultf5 = x;
    mtx.unlock();
}
 
int main(int argc, char *argv[])
{
    setlocale (0, "");
    cout << "Введiть змiнну х" << endl;
    int x;
    cin >> x;
    std::thread th1(f1,3,x);
    std::thread th2(f2,5,x);
    std::thread th3(f3,7,x);
    std::thread th4(f4,9,x);
    std::thread th5(f5, x);
 
    th1.join();
    th2.join();
    th3.join();
    th4.join();
    th5.join();
 
    cout << "Робота потоку №1" << endl;
    mtx.lock();
    cout <<resultf1<<endl;
    mtx.unlock();
    cout << "Робота потоку №1 завершено" << endl;
    cout << "Робота потоку №2" << endl;
    mtx.lock();
    cout <<resultf2<<endl;
    mtx.unlock();
    cout << "Робота потоку №2 завершено" << endl;
    cout << "Робота потоку №3" << endl;
    mtx.lock();
    cout <<resultf3<<endl;
    mtx.unlock();
    cout << "Робота потоку №3 завершено" << endl;
    cout << "Робота потоку №4" << endl;
    mtx.lock();
    cout <<resultf4<<endl;
    mtx.unlock();
    cout << "Робота потоку №4 завершено" << endl;
    cout << "Робота потоку №5" << endl;
    mtx.lock();
    cout <<resultf5<<endl;
    mtx.unlock();
    cout << "Робота потоку №5 завершено" << endl;
    cout << "Робота потоку №6" << endl;
    mtx.lock();
    cout <<"x - x^3/3! + x^5/5! - x^7/7! + x^9/9! = "<<endl;
    mtx.unlock();
    
    mtx.lock();
    cout <<resultf5-resultf1+resultf2-resultf3+resultf4<<endl;
    mtx.unlock();
    cout << "Робота потоку №6 завершено" << endl;
 system ("pause");
    return 0;
}
 
Текущее время: 18:06. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru