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

Тема в разделе "MS Visual C++", создана пользователем MaxDDT, 8 дек 2009.

  1. MaxDDT

    MaxDDT Гость

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

    Нужно распаралелить программу которая меняет местами столбцы 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]

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

    grigsoft Well-Known Member

    Регистрация:
    15 ноя 2005
    Сообщения:
    735
    Симпатии:
    0
    Ну навскидку, один поток обрабатывает первую половину массива, второй - вторую.
     
Загрузка...

Поделиться этой страницей