Форум программистов, компьютерный форум CyberForum.ru

Динамическое выделение памяти(параллельное программирование). - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ [C++] Написать мне 5 программ http://www.cyberforum.ru/cpp-beginners/thread399484.html
1. Разработать две программы. Первая принимает от пользователя два значения времени – строки вида ЦЦ.ЦЦ.ЦЦ, где Ц – это любая цифра из диапазона . Далее она вычисляет полное количество секунд, прошедших между двумя значениями времени, и выводит его на экран. Вторая программа запускает первую в качестве вновь созданного процесса. 2. Разработать программу для вычисления полного количества...
C++ cin.getline() не выполняется В коде ниже не выполняется cin.getline(), просто пропускает и начинает выполнять следующую строку (0.png то что получается). form z; // структура cout<<"Number: "; cin>>(z.NUM); cout<<"FIO: "; cin.getline(z.FIO,15); cout<<"DATE: "; cin>>(z.DATE); cout<<"SEX m/f: "; http://www.cyberforum.ru/cpp-beginners/thread399482.html
Программа, вычисляющая размер памяти, отводимой под символ C++
Написать программу, вычисляющую размер памяти, отводимой под символ \а (звуковой сигнал). какой тип для этого нужно использовать (int, char, float,double и т.д.)?
C++ Уточнение по коду
Что возвращает эта строка, если массивы double значений: s = s | s]; Добавлено через 1 час 8 минут Я прошу это уже 3 дня, что, даже модераторы не могут обьяснить
C++ Обработка исключений http://www.cyberforum.ru/cpp-beginners/thread399456.html
Подскажите пожалуйста как продолжить выполнение программы после срабатывания оператора catch. catch завершает программу, но ее нужно продолжить. Например для переввода значения. catch (Exp_mas &obj) { while( cin.fail() || i<0 ) { cout<<"Неверный символ, повторите ввод"<<endl; cin.clear(); _flushall();
C++ Помощь С++ с функциями Я решил упростить свою задачу для программы, но я видимо не совсем понимаю сути, или же вообще не понимаю, вообщем кому не сложно, прошу помочь с прогой, надо переделать под функции. Буду признателен, если пометите коментами блоки кода, что бы я понял суть. Собственное задание : Даны, вещественные массивы определить являются ли они возрастающей последовательностью, вычислить среднее... подробнее

Показать сообщение отдельно
nelson1992
3 / 3 / 0
Регистрация: 21.10.2009
Сообщений: 77
05.12.2011, 20:55     Динамическое выделение памяти(параллельное программирование).
У меня задание:

Коллективные операции. Головная машина построчно загружает с консоли квадратную матрицу. Пусть для простоты размерность матрицы кратна числу машин. Головная машина раздает матрицу всем машинам в коллективе (каждой – свое подмножество строк). Реализовать транспонирование уже распределенной матрицы.

Вот моя программа.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include "mpi.h"
#include <stdio.h>
#include<stdlib.h>
int main(int argc, char **argv) {
int numtasks, rank, source=0, dest, tag=1, i, j, el;
int *b = (int*)calloc(1, sizeof(*b));
int **a;
MPI_Status stat;
MPI_Datatype columntype;
MPI_Init(&argc,&argv);
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
MPI_Comm_size(MPI_COMM_WORLD, &numtasks);
  if (rank == 0) {
       a = (int **)calloc(numtasks, sizeof(*a)); 
       for(i = 0; i < numtasks; ++i){
       a[i] = (int*)calloc(numtasks, sizeof(*a[i]));}
       b = (int*)realloc(b, numtasks*sizeof(*b));
       for(i=0;i<numtasks;i++)
       {
            for(j=0;j<numtasks;j++)
            {
              printf("Vvedi a[%d][%d] = ",i,j);
              scanf("%d",&el);
              a[i][j]=el;
            }
       }
MPI_Type_vector(numtasks, 1, numtasks, MPI_INT, &columntype);
MPI_Type_commit(&columntype);
 
       for (i=0; i<numtasks; i++) 
           MPI_Send(&a[0][i], 1, columntype, i, tag, MPI_COMM_WORLD);
       }
  MPI_Recv(b, numtasks, MPI_INT, source, tag, MPI_COMM_WORLD, &stat);
  printf("rank= %d  b= %d %d %d\n",rank,b[0],b[1],b[2]);
MPI_Finalize();
return 0;
}
Почти все работает...не могу разобраться с выделением памяти под массив.Должно выводить:

rank= 0 b= 1 4 7
rank= 1 b= 2 5 8
rank= 2 b= 3 6 9

А выводит

rank= 0 b= 1 12 6
rank= 1 b= 2 4 12
rank= 2 b= 3 5 7

Что-то не правильно работает...помогите разобраться...

Добавлено через 3 часа 10 минут
помогите...
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 07:18. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru