Распаралелить программу

  • Автор темы MaxDDT
  • Дата начала
M

MaxDDT

#1
Здравствуйте уважаемые форумчане!

Нужно распаралелить программу которая меняет местами столбцы 2-х мерного массива. Массив размером 10*10
Количество потоков - 5.
ОС- WindowsXP
IDE - MS Visual Studio 2008 C++

Вот я сделал её, но не приложу ума как распаралелить.

<!--shcode--><pre><code class='c++'>#include <iostream>
#include <windows.h>
using namespace std;

int main()
{
SetConsoleOutputCP (1251);

int mas[10][10];
int i,j,n=10,stolbec_a,stolbec_b,buf;

cout << "Массив случайных чисел 10*10\n";
cout << endl;


/*-----------------------------Ввод массива------------------------------------*/
for (i=0; i<n; i++) //строки
for (j=0; j<n; j++) //столбцы
{mas[j]=rand()%50;}


/*--------------------------Вывод массива на экран-------------------------------*/
for (i=0; i<n; i++) //строки
{
for (j=0; j<n; j++) //столбцы
{cout << "a[" << i <<j << "]= " << mas[j] << "\t";}
cout << endl;
}

/*------------------------Выбор столбцов для перемещения------------------------*/
cout << "\nВведите номер столбца 'A' который вы хотите поменять местами с столбцом В\n";
cin >> stolbec_a;
cout << "Введите номер столбца 'B' (на место которого вы хотите поставить столбец А)\n";
cin >> stolbec_b;
if (stolbec_a >n && stolbec_b >n)
{
cout << "Вы ввели недопустимые значения \n";
}
cout << "Вы хотите поменять местами столбец номер " << stolbec_a <<" с столбцом номер " << stolbec_b << endl;


/*------------------------Перемещиние столбцов------------------------*/
for (i=0; i<n; i++)
{
buf = mas[stolbec_a];
mas[stolbec_a] = mas[stolbec_b];
mas[stolbec_b] = buf;
}

/*--------------------------Вывод результата на экран-------------------------------*/
for (i=0; i<n; i++) //строки
{
for (j=0; j<n; j++) //столбцы
{cout << "a[" << i <<j << "]= " << mas[j] << "\t";}
cout << endl;
}


cin.get();
cin.get();
}[/CODE]

Пожалуйста, кто разбирается в ПАРАЛЛЕЛЬНОМ программировании, дайте совет, или хотя бы ссылкой пните). Заранее Благодарен!
 

grigsoft

Well-known member
15.11.2005
735
0
#2
Ну навскидку, один поток обрабатывает первую половину массива, второй - вторую.