Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.11.2015, 15:56   #1
Harbinger
 
Регистрация: 08.04.2015
Сообщений: 6
По умолчанию C++ Многопоточное умножение матриц

Здравствуйте, помогите пожалуйста дописать функцию для многопоточного перемножение матриц. Я пытаюсь передать функции столбцы и строки через два массива и дальше, чтобы они перемножались и записывали результат в resultMatrix, однако толком ничего не выходит, либо мусор,а не результаты. Заранее спасибо

Код:
#include <iostream>
#include <math.h>
#include <thread>

using namespace std;
///Передать одномерный массив (строка и столбец)
void threadFunction(mas1[3],mas2[3]){
    int i,j;
    int resultMatrix[3][3],matrix1[3][3],matrix2[3][3];
    for(i = 0; i < 3; i++){
        for(j = 0; j < 3; j++){
            resultMatrix[i][j] = 0;
            for(int k = 0; k < 3; k++)
                resultMatrix[i][j] += matrix1[i][k] *matrix2[k][j];
            
            
        }
        
    }
    
    }



int main(int argc, const char * argv[]) {
    
    int matrix1[3][3], matrix2[3][3], resultMatrix[3][3];
    cout<<"Ввести данные первой матрицы:"<<endl;
    for(int i=0;i<3;i++){
        for(int j=0;j<3;j++){
            cout<<"Элемент ["<<i+1<<"]"<<"["<<j+1<<"]"<<endl;
            cin>>matrix1[i][j];
            
        }
    }
    cout<<"Ввести данные второй матрицы:"<<endl;
    for(int i=0;i<3;i++){
        for(int j=0;j<3;j++){
            cout<<"Элемент ["<<i+1<<"]"<<"["<<j+1<<"]"<<endl;
            cin>>matrix2[i][j];
        }
    }
    
    thread thr1(threadFunction,matrix1[0][0],matrix2[0][0]);
    
    thr1.join();
    thread thr2(threadFunction,matrix1[1][0],matrix2[0][1]);
    
    thr2.join();
    thread thr3(threadFunction,matrix1[2][0],matrix2[0][2]);
    
    thr3.join();
    
    /*cout<<"Результат вычислений:"<<endl;
    for(int i = 0; i < 3; i++){
        for(int j = 0; j < 3; j++){
            resultMatrix[i][j] = 0;
            for(int k = 0; k < 3; k++)
                resultMatrix[i][j] += matrix1[i][k] *matrix2[k][j];
            cout<<resultMatrix[i][j]<<" ";
    
        }
        cout<<endl;
    }*/
    
    for(int i=0;i<3;i++){
        for (int j=0; j<3; j++) {
            cout<<resultMatrix[i][j]<<" ";
        }
        cout<<endl;
    }
    
    
    return 0;
}
Harbinger вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Умножение матриц MJBuster C# (си шарп) 2 01.04.2013 13:29
Умножение матриц Macmeprag Помощь студентам 3 08.10.2011 15:58
умножение матриц затерявшисьвдебрях Помощь студентам 0 25.01.2011 22:13
умножение матриц Mila Volkova Помощь студентам 3 25.12.2010 14:17
Умножение матриц Си Slame Помощь студентам 4 16.12.2010 14:34