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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.06.2016, 16:06   #1
Novichok2016
Пользователь
 
Регистрация: 02.06.2016
Сообщений: 15
По умолчанию Реализация матричных операций с использованием коллективных взаимодействий процессов

Задание: Дана действительная матрица A(n, n). Преобразовать эту матрицу,
поэлементно вычитая значение последней строки из значений всех её строк,
кроме последней

Ребят, подскажите, пожалуйста, где ошибка? Не обрабатывает первые два элемента первой строки матрицы. Запуск программы в ОС Linux. К сожалению, не могу прикрепить скрин, т.к. нет под рукой Linux

Код:
#include<iostream>
#include<cstdlib>
#include<cstdio>
#include<ctime>
#include<cmath>
#include "mpi.h"
#include<iomanip>

using namespace std;
const int N = 3;

int main(int argc, char *argv[])
{
      setlocale(0, "");
      int i, j, rank=0, size = 1, chunk, mas2[N][N], sum = 0;
      double mas[N][N], mas1[N][N];

      MPI_Status status;
      MPI_Init(&argc, &argv);
      MPI_Comm_rank(MPI_COMM_WORLD, &rank);
      MPI_Comm_size(MPI_COMM_WORLD, &size);

      if (rank == 0)
     {
        for (i = 0; i < N; i++)
       {
         for (j = 0; j < N; j++)
         {
           mas[i][j] = rand() % 10;
          }
        }
        chunk = N / size;
       }

       MPI_Bcast(&chunk, 1, MPI_INT, 0, MPI_COMM_WORLD);

       cout << endl;
       cout << "Первоначальная матрица: " << endl;
       cout << endl;
       for (i = 0; i < chunk; i++)
      {
        for (j = 0; j < chunk; j++)
       {
         mas1[i][j] = rand() % 10;
         cout << setw(3) << mas1[i][j] << " ";
       }
       cout << endl << endl;
      }

      MPI_Scatter(mas, chunk, MPI_DOUBLE, mas1, chunk, MPI_DOUBLE, 0,     MPI_COMM_WORLD);

      for (int i = 0; i < chunk - 1; ++i)
     {
       for (int j = 0; j < chunk; ++j)
      {
        mas2[i][j] = mas1[i][j] - mas1[N - 1][j];
        mas2[N - 1][j] = mas1[N - 1][j];
      }
     }

      MPI_Gather(mas1, chunk, MPI_DOUBLE, mas, chunk, MPI_DOUBLE, 0, MPI_COMM_WORLD);

      if (rank == 0)
     {
       cout << endl;
       cout << "Преобразованная матрица: " << endl << endl;
       for (i = 0; i < N; i++)
      {
        for (j = 0; j < N; j++)
        {
         cout << setw(3) << mas2[i][j] << " ";
        }
         cout << endl << endl;
        }
     }

    MPI_Finalize();
    system("pause");
    return 0;
}
Novichok2016 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программирование матричных операций Pasha19 Паскаль, Turbo Pascal, PascalABC.NET 0 23.04.2016 12:13
Программирование матричных операций djaaaam Помощь студентам 0 13.05.2013 21:37
Программирование матричных операций take. Паскаль, Turbo Pascal, PascalABC.NET 8 20.10.2012 22:59
ПРОГРАММИРОВАНИЕ МАТРИЧНЫХ ОПЕРАЦИЙ lords Паскаль, Turbo Pascal, PascalABC.NET 2 23.03.2011 19:35
программирование матричных операций! darinochka Microsoft Office Excel 4 11.10.2010 12:25