Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // myslau.cpp : Этот файл содержит функцию "main". Здесь начинается и заканчивается выполнение программы.
- //
- #include <vector>
- #include <iostream>
- #include <fstream>
- #include <omp.h>
- #include <time.h>
- using namespace std;
- class Matrix
- {
- public:
- int n;
- vector<vector<int> > m;
- Matrix(int n)
- {
- this->n = n;
- m.resize(n, vector<int>(n));
- }
- void rand_mtrx(int mx)
- {
- ofstream f;
- f.open("C:\\myfile.txt");
- if (f.is_open())
- {
- for (int i = 0; i < n; i++)
- {
- for (int j = 0; j < n; j++)
- {
- f << m[i][j] << ' ';
- }
- f << endl;
- }
- }
- for (int i = 0; i < n; i++)
- {
- for (int j = 0; j < n; j++)
- {
- m[i][j] = rand() % mx;
- }
- }
- }
- int getSize()
- {
- return n;
- }
- };
- Matrix operator*(Matrix& m1, Matrix& m2)
- {
- int n = m1.m.size();
- Matrix m(n);
- time_t g_timeElapsed;
- omp_set_num_threads(4);
- #pragma omp parallel for
- for (int i = 0; i < n; i++)
- {
- for (int j = 0; j < n; j++)
- {
- for (int k = 0; k < n; k++)
- {
- m.m[i][j] += m1.m[i][k] * m2.m[k][j];
- }
- }
- }
- return m;
- }
- int main()
- {
- int n;
- cin >> n;
- Matrix a(n), b(n), c(n);
- a.rand_mtrx(10);
- b.rand_mtrx(10);
- clock_t start, finish;
- start = clock();
- c = a * b;
- finish = clock();
- cout << "random_mtrx" << endl;
- for (int i = 0; i < n; i++)
- {
- for (int j = 0; j < n; j++)
- {
- cout << a.m[i][j] << ' ';
- }
- cout << endl;
- }
- cout << "random_mtrx" << endl;
- for (int i = 0; i < n; i++)
- {
- for (int j = 0; j < n; j++)
- {
- cout << b.m[i][j] << ' ';
- }
- cout << endl;
- }
- cout << "result" << endl;
- for (int i = 0; i < n; i++)
- {
- for (int j = 0; j < n; j++)
- {
- cout << c.m[i][j] << ' ';
- }
- cout << endl;
- }
- cout << endl << ((double(finish) - double(start)) / CLOCKS_PER_SEC) << " sec" << endl;
- return 0;
- }
- // Запуск программы: CTRL+F5 или меню "Отладка" > "Запуск без отладки"
- // Отладка программы: F5 или меню "Отладка" > "Запустить отладку"
- // Советы по началу работы
- // 1. В окне обозревателя решений можно добавлять файлы и управлять ими.
- // 2. В окне Team Explorer можно подключиться к системе управления версиями.
- // 3. В окне "Выходные данные" можно просматривать выходные данные сборки и другие сообщения.
- // 4. В окне "Список ошибок" можно просматривать ошибки.
- // 5. Последовательно выберите пункты меню "Проект" > "Добавить новый элемент", чтобы создать файлы кода, или "Проект" > "Добавить существующий элемент", чтобы добавить в проект существующие файлы кода.
- // 6. Чтобы снова открыть этот проект позже, выберите пункты меню "Файл" > "Открыть" > "Проект" и выберите SLN-файл.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement